diff --git a/src/vkcv/PipelineManager.cpp b/src/vkcv/PipelineManager.cpp
index f79e0e96495c1e7f02c32db7cca79ef47f448d99..22f81a72b534d52c08a37cf7ef71c627ae9ffd06 100644
--- a/src/vkcv/PipelineManager.cpp
+++ b/src/vkcv/PipelineManager.cpp
@@ -246,13 +246,9 @@ namespace vkcv
         fillVertexInputDescription(vertexAttributeDescriptions, vertexBindingDescriptions, existsVertexShader, config);
 
         // Handover Containers to PipelineVertexInputStateCreateIngo Struct
-        vk::PipelineVertexInputStateCreateInfo pipelineVertexInputStateCreateInfo(
-                {},
-                vertexBindingDescriptions.size(),
-                vertexBindingDescriptions.data(),
-                vertexAttributeDescriptions.size(),
-                vertexAttributeDescriptions.data()
-        );
+        vk::PipelineVertexInputStateCreateInfo pipelineVertexInputStateCreateInfo =
+                createPipelineVertexInputStateCreateInfo(vertexAttributeDescriptions,
+                                                         vertexBindingDescriptions);
 
         // input assembly state
         vk::PipelineInputAssemblyStateCreateInfo pipelineInputAssemblyStateCreateInfo(
@@ -543,6 +539,13 @@ namespace vkcv
         return m_Device.createShaderModule(&moduleInfo, nullptr, &module);
     }
 
+    /**
+     * Fills Vertex Attribute and Binding Description with the corresponding objects form the Vertex Layout.
+     * @param vertexAttributeDescriptions
+     * @param vertexBindingDescriptions
+     * @param existsVertexShader
+     * @param config
+     */
     void PipelineManager::fillVertexInputDescription(
         std::vector<vk::VertexInputAttributeDescription> &vertexAttributeDescriptions,
         std::vector<vk::VertexInputBindingDescription>   &vertexBindingDescriptions,
@@ -570,4 +573,24 @@ namespace vkcv
             }
         }
     }
+
+    /**
+     * Create a Pipeline Vertex Input State Create Info Struct and fills it with Attribute and Binding data.
+     * @param vertexAttributeDescriptions
+     * @param vertexBindingDescriptions
+     * @return Pipeline Vertex Input State Create Info Struct
+     */
+    vk::PipelineVertexInputStateCreateInfo PipelineManager::createPipelineVertexInputStateCreateInfo(
+            std::vector<vk::VertexInputAttributeDescription> &vertexAttributeDescriptions,
+            std::vector<vk::VertexInputBindingDescription>   &vertexBindingDescriptions) {
+
+        vk::PipelineVertexInputStateCreateInfo pipelineVertexInputStateCreateInfo(
+                {},
+                vertexBindingDescriptions.size(),
+                vertexBindingDescriptions.data(),
+                vertexAttributeDescriptions.size(),
+                vertexAttributeDescriptions.data()
+        );
+        return pipelineVertexInputStateCreateInfo;
+    }
 }
diff --git a/src/vkcv/PipelineManager.hpp b/src/vkcv/PipelineManager.hpp
index 943255668d3bbbb22675d12f4a5223d79947fe67..9683cfc045e8518bddc48d5c418f06e4ab0af04a 100644
--- a/src/vkcv/PipelineManager.hpp
+++ b/src/vkcv/PipelineManager.hpp
@@ -23,12 +23,18 @@ namespace vkcv
         void destroyPipelineById(uint64_t id);
 
         vk::Result createShaderModule(vk::ShaderModule &module, const ShaderProgram &shaderProgram, ShaderStage stage);
+
         void fillVertexInputDescription(
                 std::vector<vk::VertexInputAttributeDescription> &vertexAttributeDescriptions,
                 std::vector<vk::VertexInputBindingDescription>   &vertexBindingDescriptions,
                 const bool existsVertexShader,
                 const PipelineConfig &config);
 
+        vk::PipelineVertexInputStateCreateInfo createPipelineVertexInputStateCreateInfo(
+                std::vector<vk::VertexInputAttributeDescription> &vertexAttributeDescriptions,
+                std::vector<vk::VertexInputBindingDescription>   &vertexBindingDescriptions
+                );
+
     public:
         PipelineManager() = delete; // no default ctor
         explicit PipelineManager(vk::Device device) noexcept; // ctor