diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f97022357bc5b5c08704853989c497e0edcf7f94..cc0a1f73f785b3e01a2361f762ef14010eb81577 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -139,9 +139,9 @@ unittest_py38:
   stage: unittest
   image: python:3.8
   script: &python_test_script
-    - pip install pynose pandas pytest pytest-cov gitignore-parser openpyxl>=3.0.7 xlrd==1.2 h5py
+    - pip install pynose pandas
     - pip install git+https://gitlab.indiscale.com/caosdb/src/caosdb-pylib.git@dev
-    - pip install .
+    - pip install .[test,h5-crawler,gitignore-parser]
     - pytest --cov=caosadvancedtools unittests
 
 unittest_py310:
diff --git a/setup.py b/setup.py
index a7146ead2a424dd757c4b1cd0cb37661639ff816..08908baac0211690f9298a71b23ca91aa6ebc0c1 100755
--- a/setup.py
+++ b/setup.py
@@ -165,13 +165,21 @@ def setup_package():
                           ],
         extras_require={"h5-crawler": ["h5py>=3.3.0", ],
                         "gitignore-parser": ["gitignore-parser >=0.1.0", ],
+                        "doc": [
+                            "sphinx",
+                            "sphinx-autoapi",
+                            "sphinx-rtd-theme",
+                            "recommonmark >= 0.6.0",
+                        ],
+                        "test": [
+                            "gitignore-parser",
+                            "pytest",
+                            "pytest-pythonpath",
+                            "pytest-cov",
+                            "coverage>=4.4.2",
+                        ],
                         },
         setup_requires=["pytest-runner>=2.0,<3dev"],
-        tests_require=["pytest",
-                       "pytest-pythonpath",
-                       "pytest-cov",
-                       "coverage>=4.4.2",
-                       ],
         packages=find_packages('src'),
         package_dir={'': 'src'},
         entry_points={"console_scripts": [