diff --git a/include/vkcv/Buffer.hpp b/include/vkcv/Buffer.hpp
index a3784087c0b217656d8a5e3e660457093674cb02..52056d9f0441f807aa802ef3d29b31e2129b605c 100644
--- a/include/vkcv/Buffer.hpp
+++ b/include/vkcv/Buffer.hpp
@@ -13,7 +13,7 @@
 namespace vkcv {
 
 	/**
-	 * @brief Template class for buffer management and filling data.
+	 * @brief Template class for buffer handling and filling data.
 	 *
 	 * @tparam T Buffer content type
 	 */
diff --git a/include/vkcv/Handles.hpp b/include/vkcv/Handles.hpp
index f5eddb2e432a4d460abe0547c70c18689624129f..bfe2ac26f5def4c4a0bf8a52ca2c8052382889f1 100644
--- a/include/vkcv/Handles.hpp
+++ b/include/vkcv/Handles.hpp
@@ -13,7 +13,10 @@ namespace vkcv
 {
 	
 	typedef typename event_function<uint64_t>::type HandleDestroyFunction;
-	
+
+    /**
+     * Class for general memory management via handles.
+     */
 	class Handle {
 		friend std::ostream& operator << (std::ostream& out, const Handle& handle);
 		
@@ -88,50 +91,73 @@ namespace vkcv
 	 * @return Output stream after printing
 	 */
 	std::ostream& operator << (std::ostream& out, const Handle& handle);
-	
-    // Handle returned for any buffer created with the core/context objects
+
+    /**
+     * @brief Handle class for buffers.
+     */
     class BufferHandle : public Handle {
     	friend class BufferManager;
 	private:
 		using Handle::Handle;
     };
-	
+
+    /**
+     * @brief Handle class for render passes.
+     */
 	class PassHandle : public Handle {
 		friend class PassManager;
 	private:
 		using Handle::Handle;
 	};
-	
+
+    /**
+     * @brief Handle class for graphics pipelines.
+     */
 	class GraphicsPipelineHandle : public Handle {
 		friend class GraphicsPipelineManager;
 	private:
 		using Handle::Handle;
 	};
 
+    /**
+     * @brief Handle class for compute pipelines.
+     */
     class ComputePipelineHandle : public Handle {
         friend class ComputePipelineManager;
     private:
         using Handle::Handle;
     };
-	
+
+    /**
+     * @brief Handle class for descriptor sets.
+     */
 	class DescriptorSetHandle : public Handle {
 		friend class DescriptorManager;
 	private:
 		using Handle::Handle;
 	};
 
+    /**
+     * @brief Handle class for descriptor set layouts.
+     */
 	class DescriptorSetLayoutHandle : public Handle {
 	    friend class DescriptorManager;
 	private:
 	    using Handle::Handle;
 	};
-	
+
+    /**
+     * @brief Handle class for samplers.
+     */
 	class SamplerHandle : public Handle {
 		friend class SamplerManager;
 	private:
 		using Handle::Handle;
 	};
 
+    /**
+     * @brief Handle class for images.
+     */
 	class ImageHandle : public Handle {
 		friend class ImageManager;
 	private:
@@ -156,18 +182,27 @@ namespace vkcv
 		
 	};
 
+    /**
+     * @brief Handle class for windows.
+     */
 	class WindowHandle : public Handle {
 		friend class WindowManager;
 	private:
 		using Handle::Handle;
 	};
 
+    /**
+     * @brief Handle class for swapchains.
+     */
 	class SwapchainHandle : public Handle {
 		friend class SwapchainManager;
 	private:
 		using Handle::Handle;
 	};
 
+    /**
+     * @brief Handle class for command streams.
+     */
     class CommandStreamHandle : public Handle {
         friend class CommandStreamManager;
     private:
diff --git a/include/vkcv/Image.hpp b/include/vkcv/Image.hpp
index 06090750579525ce07b5db95992129a07f2c5337..5d5359288d4b1b1f38bfabf062c9cc4cd0ca9ad1 100644
--- a/include/vkcv/Image.hpp
+++ b/include/vkcv/Image.hpp
@@ -23,6 +23,9 @@ namespace vkcv {
 	 */
 	bool isDepthFormat(const vk::Format format);
 
+    /**
+     * @brief Class for image handling and filling data.
+     */
 	class Image {
 		friend class Core;
 	public:
diff --git a/include/vkcv/Logger.hpp b/include/vkcv/Logger.hpp
index 20de2f4cde4168866119af127c5cc446d27cba3f..9d4fa86f2b42e8190e7dc57c2ad897a76f945126 100644
--- a/include/vkcv/Logger.hpp
+++ b/include/vkcv/Logger.hpp
@@ -10,7 +10,7 @@
 namespace vkcv {
 	
 	/**
-	 * Enum class to specify the level of logging.
+	 * @brief Enum class to specify the level of logging.
 	 */
 	enum class LogLevel {
 		RAW_INFO,
diff --git a/include/vkcv/PushConstants.hpp b/include/vkcv/PushConstants.hpp
index 9b870a0711eeab770065a995a4de8a061db5b0bd..ca826ea52e9bcee72c14c26496c99937c27fb775 100644
--- a/include/vkcv/PushConstants.hpp
+++ b/include/vkcv/PushConstants.hpp
@@ -11,7 +11,10 @@
 #include "Logger.hpp"
 
 namespace vkcv {
-	
+
+    /**
+     * @brief Class to handle push constants data per drawcall.
+     */
 	class PushConstants {
 	private:
 		std::vector<uint8_t> m_data;
diff --git a/include/vkcv/Result.hpp b/include/vkcv/Result.hpp
index f9d8a1802e0c26e83fb3641a8e7e12969106c156..328a44fa58c9b6303af872d7787cc1bcb7230256 100644
--- a/include/vkcv/Result.hpp
+++ b/include/vkcv/Result.hpp
@@ -6,7 +6,10 @@
  */
 
 namespace vkcv {
-	
+
+    /**
+     * @brief Enum class to specify the result of a function call.
+     */
 	enum class Result {
 		SUCCESS = 0,
 		ERROR = 1
diff --git a/include/vkcv/Sampler.hpp b/include/vkcv/Sampler.hpp
index 141c4511b344f2a6d5e26de0c8ff42b63b9372e1..c65ef8218ff209e6eeaf0e45f9309e21d85e782e 100644
--- a/include/vkcv/Sampler.hpp
+++ b/include/vkcv/Sampler.hpp
@@ -8,7 +8,7 @@
 namespace vkcv {
 
     /**
-     * Enum class to specify a samplers type to filter during access.
+     * @brief Enum class to specify a samplers type to filter during access.
      */
 	enum class SamplerFilterType {
 		NEAREST = 1,
@@ -16,7 +16,7 @@ namespace vkcv {
 	};
 
     /**
-     * Enum class to specify a samplers mode to access mipmaps.
+     * @brief Enum class to specify a samplers mode to access mipmaps.
      */
 	enum class SamplerMipmapMode {
 		NEAREST = 1,
@@ -24,7 +24,7 @@ namespace vkcv {
 	};
 
     /**
-     * Enum class to specify a samplers mode to access via address space.
+     * @brief Enum class to specify a samplers mode to access via address space.
      */
 	enum class SamplerAddressMode {
 		REPEAT = 1,
@@ -35,7 +35,7 @@ namespace vkcv {
 	};
 
     /**
-     * Enum class to specify a samplers color beyond a textures border.
+     * @brief Enum class to specify a samplers color beyond a textures border.
      */
 	enum class SamplerBorderColor {
 		INT_ZERO_OPAQUE = 1,
diff --git a/include/vkcv/ShaderProgram.hpp b/include/vkcv/ShaderProgram.hpp
index a45394dcffd594faf1c448b8d4b0a0300e579520..cfcc69f6bafc1ae8fa8dca342b7cdb781504e5cb 100644
--- a/include/vkcv/ShaderProgram.hpp
+++ b/include/vkcv/ShaderProgram.hpp
@@ -19,6 +19,9 @@
 
 namespace vkcv {
 
+    /**
+     * @brief Class to manage and reflect shaders as a program.
+     */
 	class ShaderProgram
 	{
     public:
@@ -97,6 +100,7 @@ namespace vkcv {
         std::vector<VertexAttachment> m_VertexAttachments;
         std::unordered_map<uint32_t, DescriptorBindings> m_DescriptorSets;
 		size_t m_pushConstantsSize = 0;
+
 	};
 
 }
diff --git a/include/vkcv/Surface.hpp b/include/vkcv/Surface.hpp
index d0b77b0c06fd9f4b50c4900cc8b5a179ebd37c0f..47862b9c49661f434b64f9def17037cc5bcc110c 100644
--- a/include/vkcv/Surface.hpp
+++ b/include/vkcv/Surface.hpp
@@ -14,7 +14,10 @@ namespace vkcv {
 	
 	const uint32_t MIN_SURFACE_SIZE = 2;
 
-	class Surface {
+    /**
+     * @brief Class to handle surfaces to use with a swapchain.
+     */
+	class Surface final {
 	private:
 		friend class Swapchain;
 		friend class SwapchainManager;
diff --git a/include/vkcv/Swapchain.hpp b/include/vkcv/Swapchain.hpp
index 472385baab4819f6b3bbdd9b52a36a50392a313b..9380b97ca73e46d53e7dcfbb8ba804004698b5b3 100644
--- a/include/vkcv/Swapchain.hpp
+++ b/include/vkcv/Swapchain.hpp
@@ -14,7 +14,10 @@
 
 namespace vkcv
 {
-	
+
+    /**
+     * @brief Class to handle swapchains using a context.
+     */
     class Swapchain final {
     private:
     	friend class Core;
diff --git a/include/vkcv/Window.hpp b/include/vkcv/Window.hpp
index 39e5b9eb76d5821c6097a66c7dba72f29074e2e3..d1db4bf438b95e9c96824bb6676a1d8bf020a35f 100644
--- a/include/vkcv/Window.hpp
+++ b/include/vkcv/Window.hpp
@@ -19,6 +19,9 @@ struct GLFWwindow;
 
 namespace vkcv {
 
+    /**
+     * @brief Class to handle a window.
+     */
     class Window {
 		friend class WindowManager;
 		friend class SwapchainManager;