diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..6195e8570606a19af1922db5dbc29e96f60d1e18
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,7 @@
+build
+*/*.swp
+*/**/*.swp
+.vscode
+*.code-workspace
+__pycache__
+*~
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..0807b2decd4f9d30ff4977a53730aace77f1199c
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,38 @@
+stages:
+  - build
+  - document
+
+build_faser_daq:
+  stage: build
+  image: gitlab-registry.cern.ch/faser/docker/daq:master
+  variables:
+    GIT_SUBMODULE_STRATEGY: recursive
+  script:
+    - ls
+    - pwd
+    - source setup.sh
+    - mkdir -p build 
+    - cd build
+    - cmake3 ../
+    - make -j8
+    
+# creation of doxygen documentation
+document:
+  stage: document
+  only:
+    - master
+  image: gitlab-registry.cern.ch/cholm/docker-ubuntu-doxygen:latest    
+  before_script:
+    - echo $SERVICE_PASS | kinit $CERN_USER@CERN.CH
+  script:
+    - ls
+    - pwd
+    - doxygen Doxyfile
+    - ls
+    - ls ..
+    - echo "FOR THIS TO WORK YOU NEED TO HAVE THE DIRECTORIES PRESENT ON THE OTHER END"
+    - cd ..
+    - ls faser-common
+    - #xrdcopy -s -f -p -r daq root://eoshome.cern.ch//eos/user/f/faserdaq/www/faser-common/.
+    - pwd
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c0e95c8805877713298091761e13637ff8465174
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,12 @@
+cmake_minimum_required(VERSION 3.4.3)
+
+project(faser_common)
+
+# Require a C++17 compliant compiler
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+
+add_subdirectory(EventFormats)
+add_subdirectory(Exceptions)
+add_subdirectory(Logging)
diff --git a/EventFormats/CMakeLists.txt b/EventFormats/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Exceptions/CMakeLists.txt b/Exceptions/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Logging/CMakeLists.txt b/Logging/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/README.md b/README.md
index 8690563721ac94624a3725fe3b67b684452c7ac1..925ac559bddcf0dfd8c8f39f3a55ad67f8eb0b14 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,13 @@
 # faser-common
 
-Software common to detector, online and offline faser code
\ No newline at end of file
+Software common to detector, online and offline faser code
+
+
+# Build instructions
+```
+source setup.sh
+mkdir -p build
+cd build
+cmake3 ..
+make
+```
diff --git a/setup.sh b/setup.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ea242126757a3f68827c94b42787d71318b68ece
--- /dev/null
+++ b/setup.sh
@@ -0,0 +1,11 @@
+# Copied from daqling/cmake/setup.sh to setup recent C++ compiler
+
+echo "Custom compiler, installed by Ansible from OHPC."
+
+export LD_LIBRARY_PATH=/opt/ohpc/pub/compiler/gcc/8.3.0/lib64/:/usr/local/lib64/:$LD_LIBRARY_PATH
+export PATH=/opt/ohpc/pub/compiler/gcc/8.3.0/bin:$PATH
+
+# Export package specific environmental variables
+
+export CC='/opt/ohpc/pub/compiler/gcc/8.3.0/bin/gcc'
+export CXX='/opt/ohpc/pub/compiler/gcc/8.3.0/bin/g++'