diff --git a/setup.py b/setup.py
index 776d3bd47b1766d184218a55d3953fec73b71965..fc1c33f2427f25609399819aa365d2b1ac246714 100644
--- a/setup.py
+++ b/setup.py
@@ -8,6 +8,13 @@ with open('VERSION') as f:
     _version = _version.strip("\n")
 
 
+basic_analysis_reqs = ['numpy', 'scipy',]  # and is readily available in Karabo
+advanced_analysis_reqs = [
+    'pandas', 'imageio', 'xarray>=0.13.0', 'h5py', 'h5netcdf',]
+interactive_reqs = ['ipykernel', 'matplotlib', 'tqdm',]
+maxwell_reqs = ['joblib', 'extra_data', 'euxfel_bunch_pattern>=0.6']
+
+
 setup(name='toolbox_scs',
       version=_version,
       description="A collection of code for the SCS beamline",
@@ -20,18 +27,11 @@ setup(name='toolbox_scs',
       package_dir={'': 'src'},
       packages=find_packages('src'),
       package_data={},
-      install_requires=[
-          'joblib',
-          'imageio',
-          'xarray>=0.13.0',
-          'h5py',
-          'h5netcdf',
-          'numpy',
-          'matplotlib',
-          'pandas',
-          'scipy',
-          'tqdm',
-          'extra_data',
-          'euxfel_bunch_pattern>=0.6',
-      ],
-      )
+      install_requires=basic_analysis_reqs,
+      extras_require={
+          'advanced': advanced_analysis_reqs,
+          'interactive': interactive_reqs,
+          'maxwell': advanced_analysis_reqs + interactive_reqs + maxwell_reqs,
+          'test': ['pytest']
+      }
+)