diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7f1fdceba0fc10620bdf12abc340be22c2e27252..d65f3735bb90f7510a14fae4132de1f67085a50b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -33,8 +33,13 @@ if (CMAKE_BUILD_TYPE)
 	set(vkcv_build_${_vkcv_build_type} 1)
 endif()
 
+if (EXISTS "/usr/bin/mold")
+	set(CMAKE_LINKER "/usr/bin/mold")
+endif()
+
 message(STATUS "Language: [ C++ " ${CMAKE_CXX_STANDARD} " ]")
 message(STATUS "Compiler: [ " ${CMAKE_CXX_COMPILER_ID} " " ${CMAKE_CXX_COMPILER_VERSION} " ]")
+message(STATUS "Linker: [ " ${CMAKE_LINKER} " ]")
 
 if ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.0.0"))
 	message(FATAL_ERROR "Upgrade your compiler! GCC 9.0+ is required!")
diff --git a/include/vkcv/ShaderStage.hpp b/include/vkcv/ShaderStage.hpp
index 0baaaf5b57fcc510159b8620e3119e4749467093..73cd6f5f37cc96cce384952080e32904915eee7b 100644
--- a/include/vkcv/ShaderStage.hpp
+++ b/include/vkcv/ShaderStage.hpp
@@ -3,26 +3,56 @@
 #include <vulkan/vulkan.hpp>
 
 namespace vkcv {
-
+	
 	enum class ShaderStage : VkShaderStageFlags {
-		VERTEX          = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eVertex),
-		TESS_CONTROL    = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eTessellationControl),
-		TESS_EVAL       = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eTessellationEvaluation),
-		GEOMETRY        = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eGeometry),
-		FRAGMENT        = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eFragment),
-		COMPUTE         = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eCompute),
-		TASK            = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eTaskNV),
-		MESH            = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eMeshNV),
-		RAY_GEN          = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eRaygenKHR), // RTX
-		RAY_ANY_HIT         = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eAnyHitKHR), // RTX
-		RAY_CLOSEST_HIT     = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eClosestHitKHR), // RTX
-		RAY_MISS            = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eMissKHR), // RTX
-		RAY_INTERSECTION    = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eIntersectionKHR), // RTX
-		RAY_CALLABLE        = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eCallableKHR) // RTX
+		VERTEX = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eVertex),
+		TESS_CONTROL = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eTessellationControl),
+		TESS_EVAL = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eTessellationEvaluation),
+		GEOMETRY = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eGeometry),
+		FRAGMENT = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eFragment),
+		COMPUTE = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eCompute),
+		TASK = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eTaskNV),
+		MESH = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eMeshNV),
+		RAY_GEN = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eRaygenKHR),
+		RAY_ANY_HIT = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eAnyHitKHR),
+		RAY_CLOSEST_HIT = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eClosestHitKHR),
+		RAY_MISS = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eMissKHR),
+		RAY_INTERSECTION = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eIntersectionKHR),
+		RAY_CALLABLE = static_cast<VkShaderStageFlags>(vk::ShaderStageFlagBits::eCallableKHR)
 	};
 	
 	using ShaderStages = vk::Flags<ShaderStage>;
 	
+}
+
+namespace vk {
+	
+	template<>
+	struct [[maybe_unused]] FlagTraits<vkcv::ShaderStage> {
+		enum : VkFlags {
+			allFlags [[maybe_unused]] = (
+					VkFlags( vkcv::ShaderStage::VERTEX ) |
+					VkFlags( vkcv::ShaderStage::TESS_CONTROL ) |
+					VkFlags( vkcv::ShaderStage::TESS_EVAL ) |
+					VkFlags( vkcv::ShaderStage::GEOMETRY ) |
+					VkFlags( vkcv::ShaderStage::FRAGMENT ) |
+					VkFlags( vkcv::ShaderStage::COMPUTE ) |
+					VkFlags( vkcv::ShaderStage::TASK ) |
+					VkFlags( vkcv::ShaderStage::MESH ) |
+					VkFlags( vkcv::ShaderStage::RAY_GEN ) |
+					VkFlags( vkcv::ShaderStage::RAY_ANY_HIT ) |
+					VkFlags( vkcv::ShaderStage::RAY_CLOSEST_HIT ) |
+					VkFlags( vkcv::ShaderStage::RAY_MISS ) |
+					VkFlags( vkcv::ShaderStage::RAY_INTERSECTION ) |
+					VkFlags( vkcv::ShaderStage::RAY_CALLABLE )
+			)
+		};
+	};
+	
+}
+
+namespace vkcv {
+	
 	constexpr vk::ShaderStageFlags getShaderStageFlags(ShaderStages shaderStages) noexcept {
 		return vk::ShaderStageFlags(static_cast<VkShaderStageFlags>(shaderStages));
 	}
diff --git a/lib/SPIRV-Cross b/lib/SPIRV-Cross
index ff61890722a91e97c44940494be5b6eed0d5ff5b..6a67891418a3f08be63f92726e049dc788e46f5b 160000
--- a/lib/SPIRV-Cross
+++ b/lib/SPIRV-Cross
@@ -1 +1 @@
-Subproject commit ff61890722a91e97c44940494be5b6eed0d5ff5b
+Subproject commit 6a67891418a3f08be63f92726e049dc788e46f5b
diff --git a/lib/VulkanMemoryAllocator-Hpp b/lib/VulkanMemoryAllocator-Hpp
index 3a61240a5354ce56c222969a69825aabb6ba0a21..c6c3c665b6a29ae546bdec60606a3ef0757ea108 160000
--- a/lib/VulkanMemoryAllocator-Hpp
+++ b/lib/VulkanMemoryAllocator-Hpp
@@ -1 +1 @@
-Subproject commit 3a61240a5354ce56c222969a69825aabb6ba0a21
+Subproject commit c6c3c665b6a29ae546bdec60606a3ef0757ea108
diff --git a/lib/glfw b/lib/glfw
index 0e9ec7788b4985a0df698080258e4091d18dcc3b..4cb36872a5fe448c205d0b46f0e8c8b57530cfe0 160000
--- a/lib/glfw
+++ b/lib/glfw
@@ -1 +1 @@
-Subproject commit 0e9ec7788b4985a0df698080258e4091d18dcc3b
+Subproject commit 4cb36872a5fe448c205d0b46f0e8c8b57530cfe0
diff --git a/modules/asset_loader/lib/fx-gltf b/modules/asset_loader/lib/fx-gltf
index f4f18f2017a049a23748c9c9aad42ba2de20bfd5..7766c237ea81c0bb3759e78e5c0f22854843eef8 160000
--- a/modules/asset_loader/lib/fx-gltf
+++ b/modules/asset_loader/lib/fx-gltf
@@ -1 +1 @@
-Subproject commit f4f18f2017a049a23748c9c9aad42ba2de20bfd5
+Subproject commit 7766c237ea81c0bb3759e78e5c0f22854843eef8
diff --git a/modules/asset_loader/lib/json b/modules/asset_loader/lib/json
index 0972f7ff0e651f09a306dba791cc42024b8642c1..4f8fba14066156b73f1189a2b8bd568bde5284c5 160000
--- a/modules/asset_loader/lib/json
+++ b/modules/asset_loader/lib/json
@@ -1 +1 @@
-Subproject commit 0972f7ff0e651f09a306dba791cc42024b8642c1
+Subproject commit 4f8fba14066156b73f1189a2b8bd568bde5284c5
diff --git a/modules/asset_loader/lib/stb b/modules/asset_loader/lib/stb
index c9064e317699d2e495f36ba4f9ac037e88ee371a..af1a5bc352164740c1cc1354942b1c6b72eacb8a 160000
--- a/modules/asset_loader/lib/stb
+++ b/modules/asset_loader/lib/stb
@@ -1 +1 @@
-Subproject commit c9064e317699d2e495f36ba4f9ac037e88ee371a
+Subproject commit af1a5bc352164740c1cc1354942b1c6b72eacb8a
diff --git a/modules/camera/lib/glm b/modules/camera/lib/glm
index 66062497b104ca7c297321bd0e970869b1e6ece5..6ad79aae3eb5bf809c30bf1168171e9e55857e45 160000
--- a/modules/camera/lib/glm
+++ b/modules/camera/lib/glm
@@ -1 +1 @@
-Subproject commit 66062497b104ca7c297321bd0e970869b1e6ece5
+Subproject commit 6ad79aae3eb5bf809c30bf1168171e9e55857e45
diff --git a/modules/gui/lib/imgui b/modules/gui/lib/imgui
index d5828cd988db525f27128edeadb1a689cd2d7461..eda7792b151d138e15df951578253b821ceed5a3 160000
--- a/modules/gui/lib/imgui
+++ b/modules/gui/lib/imgui
@@ -1 +1 @@
-Subproject commit d5828cd988db525f27128edeadb1a689cd2d7461
+Subproject commit eda7792b151d138e15df951578253b821ceed5a3
diff --git a/modules/shader_compiler/lib/glslang b/modules/shader_compiler/lib/glslang
index fe15158676657bf965e41c32e15ae5db7ea2ab6a..48fd6c82b3fefb38e59dd799d8b12fddddf8e63c 160000
--- a/modules/shader_compiler/lib/glslang
+++ b/modules/shader_compiler/lib/glslang
@@ -1 +1 @@
-Subproject commit fe15158676657bf965e41c32e15ae5db7ea2ab6a
+Subproject commit 48fd6c82b3fefb38e59dd799d8b12fddddf8e63c
diff --git a/modules/upscaling/lib/FidelityFX-FSR b/modules/upscaling/lib/FidelityFX-FSR
index bcffc8171efb80e265991301a49670ed755088dd..a21ffb8f6c13233ba336352bdff293894c706575 160000
--- a/modules/upscaling/lib/FidelityFX-FSR
+++ b/modules/upscaling/lib/FidelityFX-FSR
@@ -1 +1 @@
-Subproject commit bcffc8171efb80e265991301a49670ed755088dd
+Subproject commit a21ffb8f6c13233ba336352bdff293894c706575