diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a58ba0b8e56c3e8fc5699740fe002b4edff9e5af..d4a73b9f3acb36d1ac6950c9ab4e49bb664c96df 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -30,8 +30,7 @@ create_docs:
   script:
     - poetry install
     - cd docs
-    - poetry run sphinx-build -b html . build
-    - mv build/html/ ../public/
+    - poetry run sphinx-build -b html . ../public
   artifacts:
     paths:
       - public
diff --git a/docs/Makefile b/docs/Makefile
deleted file mode 100644
index d0c3cbf1020d5c292abdedf27627c6abe25e2293..0000000000000000000000000000000000000000
--- a/docs/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Minimal makefile for Sphinx documentation
-#
-
-# You can set these variables from the command line, and also
-# from the environment for the first two.
-SPHINXOPTS    ?=
-SPHINXBUILD   ?= sphinx-build
-SOURCEDIR     = source
-BUILDDIR      = build
-
-# Put it first so that "make" without argument is like "make help".
-help:
-	@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
-
-.PHONY: help Makefile
-
-# Catch-all target: route all unknown targets to Sphinx using the new
-# "make mode" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).
-%: Makefile
-	@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
diff --git a/docs/build/PLACEHOLDER b/docs/build/PLACEHOLDER
deleted file mode 100644
index f5092967106f1bea0b9eb250f231f72710e55cb2..0000000000000000000000000000000000000000
--- a/docs/build/PLACEHOLDER
+++ /dev/null
@@ -1 +0,0 @@
-... to make git keep a possibly empty directory ...
\ No newline at end of file
diff --git a/docs/source/conf.py b/docs/conf.py
similarity index 98%
rename from docs/source/conf.py
rename to docs/conf.py
index 4519d638ce3ecff124206c5d6bc0ed6cd28373a6..fede74a202d654a775dc3d9f52465407d269b6ba 100644
--- a/docs/source/conf.py
+++ b/docs/conf.py
@@ -51,4 +51,4 @@ html_theme = 'classic'
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
 # so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
\ No newline at end of file
+html_static_path = []
\ No newline at end of file
diff --git a/docs/ESDS-RFC-029v2.pdf b/docs/external_documents/ESDS-RFC-029v2.pdf
similarity index 100%
rename from docs/ESDS-RFC-029v2.pdf
rename to docs/external_documents/ESDS-RFC-029v2.pdf
diff --git a/docs/source/index.rst b/docs/index.rst
similarity index 100%
rename from docs/source/index.rst
rename to docs/index.rst
diff --git a/docs/make.bat b/docs/make.bat
deleted file mode 100644
index 6247f7e231716482115f34084ac61030743e0715..0000000000000000000000000000000000000000
--- a/docs/make.bat
+++ /dev/null
@@ -1,35 +0,0 @@
-@ECHO OFF
-
-pushd %~dp0
-
-REM Command file for Sphinx documentation
-
-if "%SPHINXBUILD%" == "" (
-	set SPHINXBUILD=sphinx-build
-)
-set SOURCEDIR=source
-set BUILDDIR=build
-
-if "%1" == "" goto help
-
-%SPHINXBUILD% >NUL 2>NUL
-if errorlevel 9009 (
-	echo.
-	echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
-	echo.installed, then set the SPHINXBUILD environment variable to point
-	echo.to the full path of the 'sphinx-build' executable. Alternatively you
-	echo.may add the Sphinx directory to PATH.
-	echo.
-	echo.If you don't have Sphinx installed, grab it from
-	echo.http://sphinx-doc.org/
-	exit /b 1
-)
-
-%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
-goto end
-
-:help
-%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
-
-:end
-popd
diff --git a/docs/source/usage.rst b/docs/usage.rst
similarity index 63%
rename from docs/source/usage.rst
rename to docs/usage.rst
index a98685a54620dc9fdbbf853346bfeb4f021b539f..34de27dfab7e7bd01fa7a876e9fe330fcabe1d71 100644
--- a/docs/source/usage.rst
+++ b/docs/usage.rst
@@ -4,14 +4,14 @@ Reading an existing dataset
 Simple format (FFI 1001)
 *************************
 
-.. literalinclude:: ../../tests/usage_examples/read_ffi1001.py
+.. literalinclude:: ../tests/usage_examples/read_ffi1001.py
 
 More complex (FFI 2110)
 *************************
 
 Identical to FFI1001, only the data structure is more complex:
 
-.. literalinclude:: ../../tests/usage_examples/read_ffi2110.py
+.. literalinclude:: ../tests/usage_examples/read_ffi2110.py
 
 Creating a new dataset 
 ############################
@@ -19,11 +19,11 @@ Creating a new dataset
 Simple format (FFI 1001)
 *************************
 
-.. literalinclude:: ../../tests/usage_examples/create_ffi1001.py
+.. literalinclude:: ../tests/usage_examples/create_ffi1001.py
 
 More complex (FFI 2110)
 *************************
 
 Again, like for FFI 1001 but more complex data structure
 
-.. literalinclude:: ../../tests/usage_examples/create_ffi2110.py
+.. literalinclude:: ../tests/usage_examples/create_ffi2110.py