diff --git a/config/Sources.cmake b/config/Sources.cmake
index a5b2ddae5e0a194e4ee887da5f37097821e41d0f..7632d7d8f788b53a22ce1a5b513f469a83b00f4d 100644
--- a/config/Sources.cmake
+++ b/config/Sources.cmake
@@ -32,7 +32,9 @@ set(vkcv_sources
 
 		${vkcv_include}/vkcv/SwapChain.hpp
 		${vkcv_source}/vkcv/SwapChain.cpp
-
+		
+		${vkcv_include}/vkcv/ShaderStage.hpp
+		
 		${vkcv_include}/vkcv/ShaderProgram.hpp
 		${vkcv_source}/vkcv/ShaderProgram.cpp
 
diff --git a/include/vkcv/DescriptorConfig.hpp b/include/vkcv/DescriptorConfig.hpp
index 5f33c9ad8827d61eb841e2f54f37c3c2c0d2351e..c6d0dfd1bc60988afb8b6a9326a8d50d8a4ea32e 100644
--- a/include/vkcv/DescriptorConfig.hpp
+++ b/include/vkcv/DescriptorConfig.hpp
@@ -1,8 +1,10 @@
 #pragma once
-#include <vkcv/ShaderProgram.hpp>
-#include <vkcv/Handles.hpp>
+
 #include <vulkan/vulkan.hpp>
 
+#include "vkcv/Handles.hpp"
+#include "vkcv/ShaderStage.hpp"
+
 namespace vkcv
 {
     struct DescriptorSet
diff --git a/include/vkcv/ShaderProgram.hpp b/include/vkcv/ShaderProgram.hpp
index a5586ab789691c646bfa8d0d1daea668dfee704f..ce28cccf07e22dda21fd14d0bddd0ba6e9842328 100644
--- a/include/vkcv/ShaderProgram.hpp
+++ b/include/vkcv/ShaderProgram.hpp
@@ -13,20 +13,11 @@
 #include <vulkan/vulkan.hpp>
 #include <spirv_cross.hpp>
 #include "vkcv/VertexLayout.hpp"
+#include "vkcv/ShaderStage.hpp"
 #include "vkcv/DescriptorConfig.hpp"
 
 namespace vkcv {
 
-    enum class ShaderStage
-    {
-        VERTEX,
-        TESS_CONTROL,
-        TESS_EVAL,
-        GEOMETRY,
-        FRAGMENT,
-        COMPUTE
-    };
-
     struct Shader
     {
         std::vector<char> shaderCode;
diff --git a/include/vkcv/ShaderStage.hpp b/include/vkcv/ShaderStage.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..dca395bdba82a2f1cb38bb0a25196cfd3dab8019
--- /dev/null
+++ b/include/vkcv/ShaderStage.hpp
@@ -0,0 +1,15 @@
+#pragma once
+
+namespace vkcv {
+	
+	enum class ShaderStage
+	{
+		VERTEX,
+		TESS_CONTROL,
+		TESS_EVAL,
+		GEOMETRY,
+		FRAGMENT,
+		COMPUTE
+	};
+
+}