diff --git a/CMakeLists.txt b/CMakeLists.txt
index d05e83679c16d0c5e7e9aa7344e96656b8f8edb8..569efcf20fe84a64205b7060bbb89587cbe579da 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,6 +14,10 @@ endif()
 message("-- Language: [ C++ " ${CMAKE_CXX_STANDARD} " ]")
 message("-- Compiler: [ " ${CMAKE_CXX_COMPILER_ID} " " ${CMAKE_CXX_COMPILER_VERSION} " ]")
 
+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!")
+endif()
+
 # setting up different paths
 set(vkcv_config ${PROJECT_SOURCE_DIR}/config)
 set(vkcv_config_ext ${vkcv_config}/ext)
diff --git a/include/vkcv/Window.hpp b/include/vkcv/Window.hpp
index ef5e35cc10a9983440d3d33f7d8dd93a6aef5199..87c98a9281e6081c98487c7fd314d960b818190f 100644
--- a/include/vkcv/Window.hpp
+++ b/include/vkcv/Window.hpp
@@ -4,12 +4,14 @@
  * @file src/vkcv/Window.hpp
  * @brief Window class to handle a basic rendering surface and input
  */
-#include <GLFW/glfw3.h>
 
 #define NOMINMAX
 #include <algorithm>
 
+struct GLFWwindow;
+
 namespace vkcv {
+	
     class Window final {
     private:
         GLFWwindow *m_window;
@@ -88,4 +90,5 @@ namespace vkcv {
          */
         virtual ~Window();
     };
+    
 }
\ No newline at end of file
diff --git a/src/vkcv/Core.cpp b/src/vkcv/Core.cpp
index dffe0a9f461de60fcd609e14377e41f14c67a4dd..75893552712789db0928ffd671604c357af432be 100644
--- a/src/vkcv/Core.cpp
+++ b/src/vkcv/Core.cpp
@@ -4,6 +4,8 @@
  * @brief Handling of global states regarding dependencies
  */
 
+#include <GLFW/glfw3.h>
+
 #include "vkcv/Core.hpp"
 #include "PassManager.hpp"
 #include "PipelineManager.hpp"
diff --git a/src/vkcv/Window.cpp b/src/vkcv/Window.cpp
index ce05d67cb216215c625b468acdb85be2fc2a8b2e..376f363a95c1e873c435825ba97e155205851347 100644
--- a/src/vkcv/Window.cpp
+++ b/src/vkcv/Window.cpp
@@ -4,8 +4,9 @@
  * @brief Window class to handle a basic rendering surface and input
  */
 
-#include "vkcv/Window.hpp"
+#include <GLFW/glfw3.h>
 
+#include "vkcv/Window.hpp"
 
 namespace vkcv {