diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt
index 3b61d1e..714d247 100644
--- a/deps/CMakeLists.txt
+++ b/deps/CMakeLists.txt
@@ -1,23 +1,21 @@
 if("${POLYSCOPE_BACKEND_OPENGL3_GLFW}")
 
   ## Glad
-  add_subdirectory(glad)
 
   ## GLFW
   set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
   set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
   set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
   set(GLFW_INSTALL OFF CACHE BOOL "" FORCE)
-  add_subdirectory(glfw)
+  find_package(glfw3 REQUIRED)
 endif()
 
 if("${POLYSCOPE_BACKEND_OPENGL_MOCK}")
 endif()
 
 ## Imgui
-add_subdirectory(imgui)
 
 ## Argparse
 
 ## Other dependencies
-add_subdirectory(stb)
+add_library(stb OBJECT stb_impl.cpp)
diff --git a/deps/MarchingCubeCpp/include/MarchingCube/MC.h b/deps/MarchingCubeCpp/include/MarchingCube/MC.h
index 62e6c37..e2d204b 100644
--- a/deps/MarchingCubeCpp/include/MarchingCube/MC.h
+++ b/deps/MarchingCubeCpp/include/MarchingCube/MC.h
@@ -5,8 +5,10 @@
 #include <cmath>
 
 // Added by nsharp: use glm instead of internal vector class
+#define GLM_ENABLE_EXPERIMENTAL
 #include <glm/glm.hpp>
 #include <glm/gtx/norm.hpp>
+#undef GLM_ENABLE_EXPERIMENTAL
 
 namespace MC
 {
diff --git a/examples/demo-app/demo_app.cpp b/examples/demo-app/demo_app.cpp
index 8af2b5a..a8be07c 100644
--- a/examples/demo-app/demo_app.cpp
+++ b/examples/demo-app/demo_app.cpp
@@ -24,7 +24,7 @@
 
 #include "args/args.hxx"
 #include "happly.h"
-#include "json/json.hpp"
+#include "nlohmann/json.hpp"
 
 #include "simple_dot_mesh_parser.h"
 #include "surface_mesh_io.h"
diff --git a/include/polyscope/internal.h b/include/polyscope/internal.h
index d339e77..c875248 100644
--- a/include/polyscope/internal.h
+++ b/include/polyscope/internal.h
@@ -2,6 +2,7 @@
 
 #pragma once
 
+#include <cstdint>
 #include <string>
 
 
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 77e6dbd..3b2d98c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -48,7 +48,7 @@ if("${POLYSCOPE_BACKEND_OPENGL3_GLFW}")
 
   # Link settings
   list(APPEND BACKEND_LIBS
-    glfw ${GLFW_LIBRARIES}
+    ${GLFW_LIBRARIES}
   )
 
   if(APPLE)
@@ -330,15 +330,9 @@ add_definitions(-DNOMINMAX)
 
 # Include settings
 target_include_directories(polyscope PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/../include")
-target_include_directories(polyscope PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/../deps/glm")
-#target_include_directories(polyscope PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../deps/args") # not used, polyscope generates no apps directly
-target_include_directories(polyscope PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../deps/happly")
-target_include_directories(polyscope PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../deps/MarchingCubeCpp")
-target_include_directories(polyscope PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../deps/json/include")
-target_include_directories(polyscope PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../deps/stb")
 target_include_directories(polyscope PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../deps/MarchingCubeCpp/include")
-target_include_directories(polyscope PRIVATE "${BACKEND_INCLUDE_DIRS}")
         
 # Link settings
 target_link_libraries(polyscope PUBLIC imgui)
 target_link_libraries(polyscope PRIVATE "${BACKEND_LIBS}" stb)
+install(TARGETS polyscope LIBRARY DESTINATION lib ARCHIVE DESTINATION lib RUNTIME DESTINATION bin)
diff --git a/src/polyscope.cpp b/src/polyscope.cpp
index 914d587..f4ccf92 100644
--- a/src/polyscope.cpp
+++ b/src/polyscope.cpp
@@ -16,7 +16,7 @@
 
 #include "stb_image.h"
 
-#include "json/json.hpp"
+#include "nlohmann/json.hpp"
 using json = nlohmann::json;
 
 #include "backends/imgui_impl_opengl3.h"
diff --git a/src/transformation_gizmo.cpp b/src/transformation_gizmo.cpp
index 25c25f8..36fedfd 100644
--- a/src/transformation_gizmo.cpp
+++ b/src/transformation_gizmo.cpp
@@ -4,8 +4,10 @@
 
 #include "polyscope/polyscope.h"
 
+#define GLM_ENABLE_EXPERIMENTAL
 #include <glm/gtc/matrix_transform.hpp>
 #include <glm/gtx/transform.hpp>
+#undef GLM_ENABLE_EXPERIMENTAL
 
 #include <cmath>
 
diff --git a/src/view.cpp b/src/view.cpp
index 5d3c60b..dd03ef0 100644
--- a/src/view.cpp
+++ b/src/view.cpp
@@ -7,7 +7,7 @@
 
 #include "imgui.h"
 
-#include "json/json.hpp"
+#include "nlohmann/json.hpp"
 using json = nlohmann::json;
 
 namespace polyscope {
