diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000000000000000000000000000000000000..c046a65e65dfd63816f08621c5aeb67807c81151
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,12 @@
+[submodule "deps/serial2"]
+	path = deps/serial2
+	url = git@gitlab.elettra.eu:cs/ds/serial2.git
+[submodule "deps/serial2client"]
+	path = deps/serial2client
+	url = git@gitlab.elettra.eu:cs/cls/serial2client.git
+[submodule "deps/socket2"]
+	path = deps/socket2
+	url = git@gitlab.elettra.eu:cs/ds/socket2.git
+[submodule "deps/ionpump"]
+	path = deps/ionpump
+	url = git@gitlab.elettra.eu:cs/ds/ionpump.git
diff --git a/Makefile b/Makefile
index 7882fde2726fa4871762607143c708e41c937a26..c3f516f0f71bcfa66b4cba80f30301e5a9dc49ea 100644
--- a/Makefile
+++ b/Makefile
@@ -1,14 +1,7 @@
 NAME_SRV = 4uhv-srv
 
-SRC_FILES = ../serial2/src/Serial2Client.cpp ../serial2/src/Serial2ClientClass.cpp \
-	    ../serial2/src/Serial2ClientStateMachine.cpp \
-	    ../serial2/src/Serial2.cpp ../serial2/src/Serial2Class.cpp \
-	    ../serial2/src/Serial2StateMachine.cpp \
-	    ../socket2/src/Socket2.cpp ../socket2/src/Socket2Class.cpp \
-	    ../socket2/src/Socket2StateMachine.cpp \
-	    ../ionpump/src/Ionpump.cpp ../ionpump/src/IonpumpClass.cpp \
-	    ../ionpump/src/IonpumpStateMachine.cpp
-CXXFLAGS = -I ../serial2/src -I ../socket2/src -I ../ionpump/src
+SRC_FILES = $(wildcard deps/serial2*/src/Serial2*.cpp deps/socket2/src/Socket2*.cpp deps/ionpump/src/Ionpump*.cpp)
+CXXFLAGS = -Ideps/serial2/src -Ideps/serial2client/src -Ideps/socket2/src -Ideps/ionpump/src
 LDFLAGS =
 
 include ../makefiles/Make-9.3.3.in
diff --git a/deps/ionpump b/deps/ionpump
new file mode 160000
index 0000000000000000000000000000000000000000..427b337c604c4a560c83ff4d67c7f46e2d7317e7
--- /dev/null
+++ b/deps/ionpump
@@ -0,0 +1 @@
+Subproject commit 427b337c604c4a560c83ff4d67c7f46e2d7317e7
diff --git a/deps/serial2 b/deps/serial2
new file mode 160000
index 0000000000000000000000000000000000000000..bbebd3e523a530a607ab8afa109613c95d1ff596
--- /dev/null
+++ b/deps/serial2
@@ -0,0 +1 @@
+Subproject commit bbebd3e523a530a607ab8afa109613c95d1ff596
diff --git a/deps/serial2client b/deps/serial2client
new file mode 160000
index 0000000000000000000000000000000000000000..10769ee9428a5b12a8015ff804efac6ad4352b85
--- /dev/null
+++ b/deps/serial2client
@@ -0,0 +1 @@
+Subproject commit 10769ee9428a5b12a8015ff804efac6ad4352b85
diff --git a/deps/socket2 b/deps/socket2
new file mode 160000
index 0000000000000000000000000000000000000000..5fa2980f5656473d6329be8b05212252bc00b833
--- /dev/null
+++ b/deps/socket2
@@ -0,0 +1 @@
+Subproject commit 5fa2980f5656473d6329be8b05212252bc00b833
diff --git a/doc/4UHV Controller User Manual.pdf b/docs/4UHV Controller User Manual.pdf
similarity index 100%
rename from doc/4UHV Controller User Manual.pdf
rename to docs/4UHV Controller User Manual.pdf
diff --git a/doc/IPCMini Ion Pump Controller User Manual.pdf b/docs/IPCMini Ion Pump Controller User Manual.pdf
similarity index 100%
rename from doc/IPCMini Ion Pump Controller User Manual.pdf
rename to docs/IPCMini Ion Pump Controller User Manual.pdf
diff --git a/doc/README b/docs/README
similarity index 100%
rename from doc/README
rename to docs/README