diff --git a/include/vkcv/Event.hpp b/include/vkcv/Event.hpp
index b66e4e6579d887f3beee5cdd20c88dff361bd3b9..da5cbc72fbb3eee3a71a35c1da6fe32dff06b057 100644
--- a/include/vkcv/Event.hpp
+++ b/include/vkcv/Event.hpp
@@ -27,7 +27,7 @@ namespace vkcv {
     private:
         std::vector< event_function<T...> > m_functions;
         uint32_t m_id_counter;
-        std::mutex m_mutex;
+		std::mutex m_mutex;
 
     public:
 
@@ -75,17 +75,21 @@ namespace vkcv {
          * locks the event so its function handles won't be called
          */
         void lock() {
-        	m_mutex.lock();
+			m_mutex.lock();
         }
 	
 		/**
 		* unlocks the event so its function handles can be called after locking
 		*/
         void unlock() {
-        	m_mutex.unlock();
+			m_mutex.unlock();
         }
 
-        event() = default;
+        explicit event(bool locked = false) {
+        	if (locked) {
+        		lock();
+        	}
+        }
 
         event(const event &other) = delete;
 
diff --git a/src/vkcv/Window.cpp b/src/vkcv/Window.cpp
index 807c959a89962dd8c1ad5086e50c84f36f0d5028..45abcb77cb39de3df6a2ea7d633e2f5a92624234 100644
--- a/src/vkcv/Window.cpp
+++ b/src/vkcv/Window.cpp
@@ -11,16 +11,18 @@ namespace vkcv {
 
 	static std::vector<GLFWwindow*> s_Windows;
 
-    Window::Window(GLFWwindow *window)
-            : m_window(window) {
+    Window::Window(GLFWwindow *window) :
+    m_window(window),
+	e_mouseButton(true),
+	e_mouseMove(true),
+	e_mouseScroll(true),
+	e_resize(true),
+	e_key(true),
+	e_char(true),
+	e_gamepad(true)
+    {
 		glfwSetWindowUserPointer(m_window, this);
 	
-		this->e_mouseButton.lock();
-		this->e_mouseMove.lock();
-		this->e_resize.lock();
-		this->e_key.lock();
-		this->e_mouseScroll.lock();
-	
 		// combine Callbacks with Events
 		glfwSetMouseButtonCallback(m_window, Window::onMouseButtonEvent);
 		glfwSetCursorPosCallback(m_window, Window::onMouseMoveEvent);
@@ -63,9 +65,10 @@ namespace vkcv {
 			
 			window->e_mouseButton.unlock();
 			window->e_mouseMove.unlock();
+			window->e_mouseScroll.unlock();
 			window->e_resize.unlock();
 			window->e_key.unlock();
-			window->e_mouseScroll.unlock();
+			window->e_char.unlock();
 			window->e_gamepad.unlock();
     	}
 
@@ -77,9 +80,10 @@ namespace vkcv {
 		
 			window->e_mouseButton.lock();
 			window->e_mouseMove.lock();
+			window->e_mouseScroll.lock();
 			window->e_resize.lock();
 			window->e_key.lock();
-			window->e_mouseScroll.lock();
+			window->e_char.lock();
 			window->e_gamepad.lock();
 		}
     }