diff --git a/.gitignore b/.gitignore
index 8d5b73b454c2ebade21010a1eef7d4b89fb94a37..a0feae3d57ed67da12bc652a0a1758b8873f3612 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,17 +1,16 @@
-build/
+# build files
 builds/
-cmake-build-debug/
-cmake-build-debug-coverage/
-cmake-build-debug-coverage-event-trace/
+cmake-build-*
 imgui.ini
 .flatpak-builder/
 compile_commands.json
 
-# dotfiles
+# dotfiles (IDE)
 .idea/
 .cache/
+.venv/
 
-# windows vs stuff
+# windows visual studio
 .vs/
 CMakePresets.json
 CMakeSettings.json
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3f9ff2deb9cd0b10380051de09fba826081daddb..e9af9aabef2bab1f1481d86d12329a5a500b28a0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,6 +4,9 @@ set(namespace "fggl")
 set(CMAKE_CXX_STANDARD 20)
 
 option(FGGL_CONAN "Should we use conan to find missing dependencies?" OFF)
+option(FGGL_EXAMPLES "Should we build examples or just the library" ON)
+option(FGGL_DOCS "Should we build documentation?" ON)
+
 set(CONAN_BUILD_TYPE "Debug")
 
 # Define the project
@@ -22,11 +25,13 @@ if (CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
 	include(CTest)
 
 	# Documentation support
-	find_package(Doxygen)
-	if (Doxygen_FOUND)
-		add_subdirectory( docs )
-	else()
-		message(STATUS "Doxygen not found, not building docs")
+	if (FGGL_DOCS)
+		find_package(Doxygen)
+		if (Doxygen_FOUND)
+			add_subdirectory( docs )
+		else()
+			message(STATUS "Doxygen not found, not building docs")
+		endif()
 	endif()
 
 endif()
@@ -54,7 +59,9 @@ target_compile_options( ${PROJECT_NAME} PRIVATE -Wall -fno-strict-aliasing -fno-
 
 # extras
 #add_subdirectory(tests)
-add_subdirectory(demo)
+if (FGGL_EXAMPLES)
+  add_subdirectory(demo)
+endif()
 
 ##
 # INSTALL PHASE