diff --git a/examples/produce_data_manyStations.ipynb b/examples/produce_data_manyStations.ipynb
index c4462354d8b66e997aa6a7c161a89d3bc661c0ab..06dafc6f1947eafdf1510b77176368271567b37b 100644
--- a/examples/produce_data_manyStations.ipynb
+++ b/examples/produce_data_manyStations.ipynb
@@ -85,6 +85,7 @@
     "        time=config.time,\n",
     "        variables=config.variables,\n",
     "        stats=config.stats,\n",
+    "        contributors_path=result_basepath\n",
     "    )\n",
     "\n",
     "    for dataset, metadata in zip(datasets, metadatas):\n",
diff --git a/examples/produce_data_withOptional.ipynb b/examples/produce_data_withOptional.ipynb
index e73b77e5e862fb2688f4c3ec22ded9b5f554f11c..cb1caa1b911115aed335a700c1c81b4dbf74ebc3 100644
--- a/examples/produce_data_withOptional.ipynb
+++ b/examples/produce_data_withOptional.ipynb
@@ -2,22 +2,9 @@
  "cells": [
   {
    "cell_type": "code",
-   "execution_count": 1,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "ename": "NameError",
-     "evalue": "name 'kwargs' is not defined",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
-      "Cell \u001b[0;32mIn[1], line 8\u001b[0m\n\u001b[1;32m      6\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtoargridding\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtoar_rest_client\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m AnalysisServiceDownload, Connection\n\u001b[1;32m      7\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtoargridding\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mgrids\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m RegularGrid\n\u001b[0;32m----> 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtoargridding\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mgridding\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m get_gridded_toar_data\n\u001b[1;32m      9\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtoargridding\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mmetadata\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m TimeSample\n\u001b[1;32m     11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtoargridding\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mdefaultLogging\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m toargridding_defaultLogging\n",
-      "File \u001b[0;32m~/Eigene Daten/FZJ/JSC/workingDirectories/TOAR/toargridding/src/toargridding/gridding.py:21\u001b[0m\n\u001b[1;32m      9\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtoargridding\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtoar_rest_client\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m AnalysisService\n\u001b[1;32m     11\u001b[0m GriddedResult \u001b[38;5;241m=\u001b[39m namedtuple(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mGriddedResult\u001b[39m\u001b[38;5;124m\"\u001b[39m, [\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdataset\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmetadata\u001b[39m\u001b[38;5;124m\"\u001b[39m])\n\u001b[1;32m     14\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mget_gridded_toar_data\u001b[39m(\n\u001b[1;32m     15\u001b[0m     analysis_service: AnalysisService,\n\u001b[1;32m     16\u001b[0m     grid: GridDefinition,\n\u001b[1;32m     17\u001b[0m     time: TimeSample,\n\u001b[1;32m     18\u001b[0m     variables: \u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mstr\u001b[39m],\n\u001b[1;32m     19\u001b[0m     stats: \u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mstr\u001b[39m],\n\u001b[1;32m     20\u001b[0m     contributors_path : Path \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m---> 21\u001b[0m     \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[43mkwargs\u001b[49m,\n\u001b[1;32m     22\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mtuple\u001b[39m[\u001b[38;5;28mlist\u001b[39m[xr\u001b[38;5;241m.\u001b[39mDataset], \u001b[38;5;28mlist\u001b[39m[Metadata]]:\n\u001b[1;32m     23\u001b[0m \u001b[38;5;250m    \u001b[39m\u001b[38;5;124;03m\"\"\"API to download data as xarrays\u001b[39;00m\n\u001b[1;32m     24\u001b[0m \n\u001b[1;32m     25\u001b[0m \u001b[38;5;124;03m    The function creates all combinations of the variable and stats list\u001b[39;00m\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m     42\u001b[0m \u001b[38;5;124;03m        Gridded datasets for each combination of variables and stats and appropriate metadata for each dataset.\u001b[39;00m\n\u001b[1;32m     43\u001b[0m \u001b[38;5;124;03m    \"\"\"\u001b[39;00m\n\u001b[1;32m     45\u001b[0m     metadatas \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m     46\u001b[0m         Metadata\u001b[38;5;241m.\u001b[39mconstruct(standard_name\u001b[38;5;241m=\u001b[39mvar, time\u001b[38;5;241m=\u001b[39mtime, stat\u001b[38;5;241m=\u001b[39mstat, moreOptions\u001b[38;5;241m=\u001b[39mkwargs)\n\u001b[1;32m     47\u001b[0m         \u001b[38;5;28;01mfor\u001b[39;00m var, stat \u001b[38;5;129;01min\u001b[39;00m product(variables, stats)\n\u001b[1;32m     48\u001b[0m     ]\n",
-      "\u001b[0;31mNameError\u001b[0m: name 'kwargs' is not defined"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "import logging\n",
     "from datetime import datetime as dt\n",
diff --git a/examples/produce_data_withOptional_country.ipynb b/examples/produce_data_withOptional_country.ipynb
index 1e8dc2ea9fbdac1e77c2cf2122a4f8bc3179ce2f..f97de650c292219454fb21a0aaa58390bb8f7d95 100644
--- a/examples/produce_data_withOptional_country.ipynb
+++ b/examples/produce_data_withOptional_country.ipynb
@@ -93,6 +93,7 @@
     "            time=config.time,\n",
     "            variables=config.variables,\n",
     "            stats=config.stats,\n",
+    "            contributors_path=result_basepath\n",
     "            **config.moreOptions\n",
     "        )\n",
     "    except EmptyDataError as e:\n",
diff --git a/examples/quality_controll.ipynb b/examples/quality_controll.ipynb
index abd87257a311323fbaaebeda4bc88a69bcab8c59..a95cef83cb9e75c8edf3bb9f4047d1281b829e60 100644
--- a/examples/quality_controll.ipynb
+++ b/examples/quality_controll.ipynb
@@ -65,7 +65,6 @@
     "contrib.extract_contributors_from_data_frame(data.stations_data)\n",
     "metadata.contributors_metadata_field = contrib.setup_contributors_endpoint_for_metadata()\n",
     "ds = my_grid.as_xarray(data)\n",
-    "print(ds)\n",
     "#store dataset\n",
     "ds.to_netcdf(data_download_dir / f\"{metadata.get_id()}_{my_grid.get_id()}.nc\")"
    ]
diff --git a/src/toargridding/gridding.py b/src/toargridding/gridding.py
index 94e8dfea7477f747036ebf2ab2e56f5fdf836c7a..ffc0c0cd24fe41b53a5202f1f9c5adb6d465ebea 100644
--- a/src/toargridding/gridding.py
+++ b/src/toargridding/gridding.py
@@ -8,6 +8,8 @@ from toargridding.grids import GridDefinition
 from toargridding.metadata import Metadata, TimeSample
 from toargridding.toar_rest_client import AnalysisService
 
+from toargridding.contributors import contributionsManager
+
 GriddedResult = namedtuple("GriddedResult", ["dataset", "metadata"])
 
 
@@ -36,6 +38,9 @@ def get_gridded_toar_data(
         list of variables to be extracted from the TOARdatabase
     stats:
         list of statistical properties to be extracted from the TOAR database
+    contributors_path:
+        pathname to write the contributors path. We advise to store the contributor files into the same directory as the resulting data.
+        Without a provided path, it is assumed, that toargridding is operated as a service and the contributors can be directly provided through the contributors endpoint. This is not yet implemented.
 
     return:
     -------
@@ -51,6 +56,10 @@ def get_gridded_toar_data(
     for metadata in metadatas:  # standard_name ?
         data = analysis_service.get_data(metadata)
         #TODO add processing of contributors
+        # create contributors endpoint and write result to metadata
+        contrib = contributionsManager(metadata.get_id(), contributors_path)
+        contrib.extract_contributors_from_data_frame(data.stations_data)
+        metadata.contributors_metadata_field = contrib.setup_contributors_endpoint_for_metadata()
         ds = grid.as_xarray(data)
         datasets.append(ds)