diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index bccc60c8c73f8bab28ce07e1f4d7526f5598f98b..6d2557ea435010d73fc36b67bab796e9b9c95a2e 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -5,6 +5,8 @@ include_directories(
     "${PROJECT_SOURCE_DIR}/src/gfx/include"
     "${PROJECT_SOURCE_DIR}/src/gui/include"
     "${PROJECT_SOURCE_DIR}/src/filein/include"
+    "${PROJECT_SOURCE_DIR}/src/common/include"
+    "${PROJECT_SOURCE_DIR}/src/controls/include"
     )
 
 set(ROFIBOTS_LIBRARIES_TO_LINK_WITH
@@ -13,6 +15,8 @@ set(ROFIBOTS_LIBRARIES_TO_LINK_WITH
     gfx
     gui
     filein
+    common
+    controls
     )
 
 message("Including the following libraries to the build:")
@@ -26,6 +30,10 @@ add_subdirectory(./gui)
 message("-- gui")  
 add_subdirectory(./filein)
 message("-- filein")  
+add_subdirectory(./common)
+message("-- common")  
+add_subdirectory(./controls)
+message("-- controls")  
 
 message("Including the following executables to the build:")
 add_subdirectory(./studio)
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0de07b0418cc5e6bac35865acfc1ce3ccac1a118
--- /dev/null
+++ b/src/common/CMakeLists.txt
@@ -0,0 +1,21 @@
+set(THIS_TARGET_NAME common)
+
+add_library(${THIS_TARGET_NAME}
+    ./include/common/aabb.hpp
+    ./src/aabb.cpp
+
+    ./include/common/frame.hpp
+    ./src/frame.cpp
+
+    ./include/common/node.hpp
+    # ./src/node.cpp
+
+    )
+
+set_target_properties(${THIS_TARGET_NAME} PROPERTIES
+    DEBUG_OUTPUT_NAME "${THIS_TARGET_NAME}_${CMAKE_SYSTEM_NAME}_Debug"
+    RELEASE_OUTPUT_NAME "${THIS_TARGET_NAME}_${CMAKE_SYSTEM_NAME}_Release"
+    RELWITHDEBINFO_OUTPUT_NAME "${THIS_TARGET_NAME}_${CMAKE_SYSTEM_NAME}_RelWithDebInfo"
+    )
+
+#install(TARGETS ${THIS_TARGET_NAME} DESTINATION "lib")
diff --git a/src/gfx/include/gfx/aabb.hpp b/src/common/include/common/aabb.hpp
similarity index 92%
rename from src/gfx/include/gfx/aabb.hpp
rename to src/common/include/common/aabb.hpp
index 65c78f372e836200302c851a08557f99e77d4d42..103455fd4ce6270da11dc8f1803563aeed823da8 100644
--- a/src/gfx/include/gfx/aabb.hpp
+++ b/src/common/include/common/aabb.hpp
@@ -7,7 +7,7 @@
 #include <array>
 #include <utility>
 #include <memory>
-#include <gfx/node.hpp>
+#include <common/node.hpp>
 
 using node_ptr = std::shared_ptr<Node>;
 
diff --git a/src/gfx/include/gfx/frame.hpp b/src/common/include/common/frame.hpp
similarity index 100%
rename from src/gfx/include/gfx/frame.hpp
rename to src/common/include/common/frame.hpp
diff --git a/src/gfx/include/gfx/node.hpp b/src/common/include/common/node.hpp
similarity index 95%
rename from src/gfx/include/gfx/node.hpp
rename to src/common/include/common/node.hpp
index f221afda55c65b30961695d58bbbe98788708444..0223b89700cd0204cc8620b34b2d62e024f4bc30 100644
--- a/src/gfx/include/gfx/node.hpp
+++ b/src/common/include/common/node.hpp
@@ -1,7 +1,7 @@
 #ifndef NODE_INCLUDED
 #define NODE_INCLUDED
 
-#include <gfx/frame.hpp>
+#include <common/frame.hpp>
 #include <gfx/objectbase.hpp>
 #include <vector>
 #include <memory>
diff --git a/src/gfx/src/aabb.cpp b/src/common/src/aabb.cpp
similarity index 95%
rename from src/gfx/src/aabb.cpp
rename to src/common/src/aabb.cpp
index 374839abb34cee80deb89bb0945acbf513f25b14..c75a59f531e29d0d819e222d89d948a013db8545 100644
--- a/src/gfx/src/aabb.cpp
+++ b/src/common/src/aabb.cpp
@@ -1,4 +1,4 @@
-#include <gfx/aabb.hpp>
+#include <common/aabb.hpp>
 
 AABB::AABB(std::vector<float> const &vertices)
 {
diff --git a/src/common/src/frame.cpp b/src/common/src/frame.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b5a0ba57825283f664291532c7b29fb3798d1ee1
--- /dev/null
+++ b/src/common/src/frame.cpp
@@ -0,0 +1 @@
+#include <common/frame.hpp>
diff --git a/src/controls/CMakeLists.txt b/src/controls/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4ff3517e4afec4ea300e1a2be2cb6d1ce0b318e4
--- /dev/null
+++ b/src/controls/CMakeLists.txt
@@ -0,0 +1,21 @@
+set(THIS_TARGET_NAME controls)
+
+add_library(${THIS_TARGET_NAME}
+    ./include/controls/control.hpp
+    ./src/control.cpp
+
+    ./include/controls/cam_control.hpp
+    ./src/cam_control.cpp
+
+    ./include/controls/obj_control.hpp
+    ./src/obj_control.cpp
+
+    )
+
+set_target_properties(${THIS_TARGET_NAME} PROPERTIES
+    DEBUG_OUTPUT_NAME "${THIS_TARGET_NAME}_${CMAKE_SYSTEM_NAME}_Debug"
+    RELEASE_OUTPUT_NAME "${THIS_TARGET_NAME}_${CMAKE_SYSTEM_NAME}_Release"
+    RELWITHDEBINFO_OUTPUT_NAME "${THIS_TARGET_NAME}_${CMAKE_SYSTEM_NAME}_RelWithDebInfo"
+    )
+
+#install(TARGETS ${THIS_TARGET_NAME} DESTINATION "lib")
diff --git a/src/gfx/include/gfx/cam_control.hpp b/src/controls/include/controls/cam_control.hpp
similarity index 92%
rename from src/gfx/include/gfx/cam_control.hpp
rename to src/controls/include/controls/cam_control.hpp
index 36aa781025524a6deaf00e6796312f3490183bf5..d9af94596429b0dbd9de26344be20cc95ad102e2 100644
--- a/src/gfx/include/gfx/cam_control.hpp
+++ b/src/controls/include/controls/cam_control.hpp
@@ -6,7 +6,7 @@
 #include <glm/gtc/matrix_transform.hpp>
 #include <glm/gtc/type_ptr.hpp>
 
-#include <gfx/control.hpp>
+#include <controls/control.hpp>
 
 #include <osi/window.hpp>
 #include <osi/keyboard.hpp>
diff --git a/src/gfx/include/gfx/control.hpp b/src/controls/include/controls/control.hpp
similarity index 93%
rename from src/gfx/include/gfx/control.hpp
rename to src/controls/include/controls/control.hpp
index 36c4bc49f9506d5273e7ec7e03571dfed5540650..b4c9507f6f0e7699768d0db8b78629acd7cb3f3e 100644
--- a/src/gfx/include/gfx/control.hpp
+++ b/src/controls/include/controls/control.hpp
@@ -6,7 +6,7 @@
 #include <glm/gtc/matrix_transform.hpp>
 #include <glm/gtc/type_ptr.hpp>
 
-#include <gfx/frame.hpp>
+#include <common/frame.hpp>
 #include <unordered_set>
 #include <string>
 #include <memory>
diff --git a/src/gfx/include/gfx/obj_control.hpp b/src/controls/include/controls/obj_control.hpp
similarity index 91%
rename from src/gfx/include/gfx/obj_control.hpp
rename to src/controls/include/controls/obj_control.hpp
index 6f9c4dc4723b5d950a88cfd7ceb10040fa9862e8..ba1246828bb290f16d9ba301d408d712f42ef1f5 100644
--- a/src/gfx/include/gfx/obj_control.hpp
+++ b/src/controls/include/controls/obj_control.hpp
@@ -6,8 +6,8 @@
 #include <glm/gtc/matrix_transform.hpp>
 #include <glm/gtc/type_ptr.hpp>
 
-#include <gfx/control.hpp>
-#include <gfx/frame.hpp>
+#include <controls/control.hpp>
+#include <common/frame.hpp>
 #include <unordered_set>
 #include <string>
 
diff --git a/src/gfx/src/cam_control.cpp b/src/controls/src/cam_control.cpp
similarity index 94%
rename from src/gfx/src/cam_control.cpp
rename to src/controls/src/cam_control.cpp
index 7d824d130bba33f44c713ab15b16d3448eee7ea7..0ed0aaf1bf7c1ab4b0d9dbf5c68fb314c9969fea 100644
--- a/src/gfx/src/cam_control.cpp
+++ b/src/controls/src/cam_control.cpp
@@ -1,4 +1,4 @@
-#include <gfx/cam_control.hpp>
+#include <controls/cam_control.hpp>
 
 void CameraController::turn(float xoffset, float yoffset)
 {
diff --git a/src/gfx/src/control.cpp b/src/controls/src/control.cpp
similarity index 93%
rename from src/gfx/src/control.cpp
rename to src/controls/src/control.cpp
index c1ae9e0318d6bba5cf4e3d8608453576f61bb696..71c295fca53894ad6dc470ea2cc990c6b933b4f9 100644
--- a/src/gfx/src/control.cpp
+++ b/src/controls/src/control.cpp
@@ -1,4 +1,4 @@
-#include <gfx/control.hpp>
+#include <controls/control.hpp>
 
 void Controller::setStep(float dt)
 {
diff --git a/src/gfx/src/obj_control.cpp b/src/controls/src/obj_control.cpp
similarity index 96%
rename from src/gfx/src/obj_control.cpp
rename to src/controls/src/obj_control.cpp
index 95bc68bb97f26396bb29247482396227bff1abe3..d3f7e555636de798d8cc33023eaeda44b0a13062 100644
--- a/src/gfx/src/obj_control.cpp
+++ b/src/controls/src/obj_control.cpp
@@ -1,4 +1,4 @@
-#include <gfx/obj_control.hpp>
+#include <controls/obj_control.hpp>
 
 void ObjectController::mouseRotate(const osi::Mouse &mouse)
 {
diff --git a/src/gfx/CMakeLists.txt b/src/gfx/CMakeLists.txt
index f77f4f3769e0465669288bd3a4c43f9f08158631..0ba8830c2221ab3771a285836bc5bf4dbb4d63c6 100644
--- a/src/gfx/CMakeLists.txt
+++ b/src/gfx/CMakeLists.txt
@@ -22,30 +22,12 @@ add_library(${THIS_TARGET_NAME}
     ./include/gfx/object.hpp
     ./src/object.cpp
 
-    ./include/gfx/frame.hpp
-    ./src/frame.cpp
-
-    ./include/gfx/control.hpp
-    ./src/control.cpp
-
-    ./include/gfx/cam_control.hpp
-    ./src/cam_control.cpp
-
-    ./include/gfx/obj_control.hpp
-    ./src/obj_control.cpp
-
     ./include/gfx/light.hpp
     #./src/light.cpp
 
-    ./include/gfx/node.hpp
-    #./src/node.cpp
-
     ./include/gfx/objectbase.hpp
     #./src/objectbase.cpp
 
-    ./include/gfx/aabb.hpp
-    ./src/aabb.cpp
-
     # ./include/osi/opengl.hpp
     # ./include/osi/gui.hpp
     )
diff --git a/src/gfx/include/gfx/camera.hpp b/src/gfx/include/gfx/camera.hpp
index e8e831a401c32c01598d570e076c99efa64be769..a9de5a55f4e0e8ec1feee800869f47e513c314bf 100644
--- a/src/gfx/include/gfx/camera.hpp
+++ b/src/gfx/include/gfx/camera.hpp
@@ -8,7 +8,7 @@
 #include <memory>
 
 #include <gfx/objectbase.hpp>
-#include <gfx/frame.hpp>
+#include <common/frame.hpp>
 
 using frame_ptr = std::shared_ptr<Frame>;
 using frame_weak_ptr = std::weak_ptr<Frame>;
diff --git a/src/gfx/include/gfx/light.hpp b/src/gfx/include/gfx/light.hpp
index 163e6d968633174d35641926e99fbaef543d4b4a..9896d6369ecf85b828290b9eb492f697c7a2df17 100644
--- a/src/gfx/include/gfx/light.hpp
+++ b/src/gfx/include/gfx/light.hpp
@@ -4,8 +4,8 @@
 #include <glad/glad.h>
 #include <glm/glm.hpp>
 
-#include <gfx/frame.hpp>
-#include <gfx/node.hpp>
+#include <common/frame.hpp>
+#include <common/node.hpp>
 #include <gfx/objectbase.hpp>
 
 using frame_ptr = std::shared_ptr<Frame>;
diff --git a/src/gfx/include/gfx/object.hpp b/src/gfx/include/gfx/object.hpp
index a6db6243eede96f6bf9a38ccc9348ed9ad114722..89950eed7d6b69058bdc2ce1bc3d63cca32daa99 100644
--- a/src/gfx/include/gfx/object.hpp
+++ b/src/gfx/include/gfx/object.hpp
@@ -10,7 +10,7 @@
 #include <gfx/vao.hpp>
 #include <gfx/vbo.hpp>
 #include <gfx/ebo.hpp>
-#include <gfx/aabb.hpp>
+#include <common/aabb.hpp>
 
 using VAO_ptr = std::shared_ptr<VAO>;
 
diff --git a/src/gfx/src/frame.cpp b/src/gfx/src/frame.cpp
deleted file mode 100644
index a73e8b32897cbab04e207fcc61cde8dc32d8d83a..0000000000000000000000000000000000000000
--- a/src/gfx/src/frame.cpp
+++ /dev/null
@@ -1 +0,0 @@
-#include <gfx/frame.hpp>
diff --git a/src/gfx/src/render.cpp b/src/gfx/src/render.cpp
index 67c79c4b498c1ebfc3864b9323be794d49e48242..726829716ac13cc2a34ef56e50db444515632017 100644
--- a/src/gfx/src/render.cpp
+++ b/src/gfx/src/render.cpp
@@ -8,7 +8,7 @@
 #include <gfx/ebo.hpp>
 #include <gfx/camera.hpp>
 #include <gfx/object.hpp>
-#include <gfx/frame.hpp>
+#include <common/frame.hpp>
 #include <gfx/render.hpp> // Order important for compile
 #include <gfx/shader.hpp>
 #include <iostream>
diff --git a/src/studio/include/studio/simulator.hpp b/src/studio/include/studio/simulator.hpp
index 4d4179a4057643ae7413edacfb1998ee804161af..aa6ece751ef71d026ab4d25d631c1acf1711accd 100644
--- a/src/studio/include/studio/simulator.hpp
+++ b/src/studio/include/studio/simulator.hpp
@@ -15,11 +15,11 @@
 #include <gfx/camera.hpp>
 #include <gfx/objectbase.hpp>
 #include <gfx/object.hpp>
-#include <gfx/frame.hpp>
+#include <common/frame.hpp>
 #include <gfx/light.hpp>
-#include <gfx/node.hpp>
-#include <gfx/cam_control.hpp>
-#include <gfx/obj_control.hpp>
+#include <common/node.hpp>
+#include <controls/cam_control.hpp>
+#include <controls/obj_control.hpp>
 #include <gfx/shader.hpp>
 #include <gfx/render.hpp>
 #include <iostream>