diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 473065a8bf3d93a9f5814b8cf05294d123bfce82..4b8f505150295f872a56c491c035f967ad0dc84d 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -8,10 +8,6 @@ repos:
     rev: 3.8.3
     hooks:
     - id: flake8
--   repo: https://gitlab.com/dboe/dough
-    rev: v0.1.10
-    hooks:
-    - id: readthedocs_requirements
 -   repo: https://github.com/pre-commit/pre-commit-hooks 
     rev: v3.1.0
     hooks:
diff --git a/.readthedocs.yml b/.readthedocs.yml
index 0944359a16be34daf44448f2fc6840a4df03aa2e..1db793f37946026137fbe27e56e648887339190c 100644
--- a/.readthedocs.yml
+++ b/.readthedocs.yml
@@ -19,7 +19,6 @@ sphinx:
 python:
   version: 3.7
   install:
-    - requirements: docs/requirements.txt
     - method: pip
       path: .
       extra_requirements:
diff --git a/Makefile b/Makefile
index 5776f574ef49c3481d6bbb103d53f47dfb74efa0..7147b300c849f0a899e05972afd1368e4361457e 100644
--- a/Makefile
+++ b/Makefile
@@ -47,7 +47,7 @@ untag:
 
 requirements: setup.cfg
 	# We have all the information in the setup.cfg file. For some reasons (e.g. bug in setuptools or limitations to use setup.cfg in readthedocs) we still need a requirements file
-	python -c "import configparser; import os; config = configparser.ConfigParser(); config.read('setup.cfg'); deps = config['metadata']['install_requires'].split('\n'); deps = [x for x in deps if x]; head = '# Autogenerated by Makefile from setup.cfg install_requies section. Remove this line if you want to fix this file.'; path = 'requirements.txt'; f = open(path, 'r') if os.path.exists(path) else None; line = f.readline() if f else ''; quit('User defined requirements already existing.') if f and not line.startswith(head[:20]) else None; f = open('requirements.txt', 'w'); f.write('\n'.join([head] + deps))"
+	python -c "import configparser; import os; config = configparser.ConfigParser(); config.read('setup.cfg'); deps = config['options']['install_requires'].split('\n'); deps = [x for x in deps if x]; head = '# Autogenerated by Makefile from setup.cfg install_requies section. Remove this line if you want to fix this file.'; path = 'requirements.txt'; f = open(path, 'r') if os.path.exists(path) else None; line = f.readline() if f else ''; quit('User defined requirements already existing.') if f and not line.startswith(head[:20]) else None; f = open('requirements.txt', 'w'); f.write('\n'.join([head] + deps))"
 
 doc: Makefile $(SOURCES) $(DOCUMENTATION) docs/conf.py docs/apidoc-template/*
 	# link apidoc to source and build html documentation with sphinx
diff --git a/docs/cookiecutter_input.json b/docs/cookiecutter_input.json
index 67589ad38ced6cd2e9b1faffd8751b3308727979..dc5aad8699abcc1e818a5e8e7e9175ab9817797f 100644
--- a/docs/cookiecutter_input.json
+++ b/docs/cookiecutter_input.json
@@ -1,18 +1,18 @@
 {
-  "_template": "https://gitlab.com/dboe/dough.git",
-  "author": "Daniel B\u00f6ckenhoff",
-  "continuous_integration": "y",
-  "copyright_holder": "Daniel B\u00f6ckenhoff",
-  "copyright_license": "MIT License",
-  "data_science": "n",
-  "distribution_name": "tfields",
-  "email": "dboe@ipp.mpg.de",
-  "keywords": "tensors, tensor-fields, graphs, mesh, numpy, math",
-  "package_name": "tfields",
-  "package_version": "0.3.2",
-  "pypi_username": "dboe",
-  "remote_namespace": "dboe",
-  "remote_provider": "gitlab.mpcdf.mpg.de",
-  "remote_username": "dboe",
-  "summary": "Tensors, tensor fields, graphs, mesh manipulation, CAD and more on the basis of numpy.ndarrays. All objects keep track of their coordinate system. Symbolic math operations work for object manipulation."
+    "_template": "https://gitlab.com/dboe/dough.git",
+    "author": "Daniel B\u00f6ckenhoff",
+    "continuous_integration": "y",
+    "copyright_holder": "Daniel B\u00f6ckenhoff",
+    "copyright_license": "MIT License",
+    "data_science": "n",
+    "distribution_name": "tfields",
+    "email": "dboe@ipp.mpg.de",
+    "keywords": "tensors, tensor-fields, graphs, mesh, numpy, math",
+    "package_name": "tfields",
+    "package_version": "0.3.2",
+    "pypi_username": "dboe",
+    "remote_namespace": "dboe",
+    "remote_provider": "gitlab.mpcdf.mpg.de",
+    "remote_username": "dboe",
+    "summary": "Tensors, tensor fields, graphs, mesh manipulation, CAD and more on the basis of numpy.ndarrays. All objects keep track of their coordinate system. Symbolic math operations work for object manipulation."
 }
diff --git a/setup.cfg b/setup.cfg
index 52957a7a84dde2d0892bd124134d3a3ccca0d44c..13e4758e63d26a9ef30311c95802e100185e9910 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -8,9 +8,16 @@ message = release-v{new_version}
 search = __version__ = '{current_version}'
 replace = {new_version}
 
+[bumpversion:file:setup.py]
+search = version='{current_version}'
+replace = {new_version}
+
+[bumpversion:file:docs/cookiecutter_input.json]
+search = "package_version": "{current_version}"
+replace = {new_version}
+
 [metadata]
 name = tfields
-version = attr: tfields.__version__
 url = https://gitlab.mpcdf.mpg.de/dboe/tfields
 author = Daniel Böckenhoff
 author_email = dboe@ipp.mpg.de
@@ -29,9 +36,9 @@ description = Tensors, tensor fields, graphs, mesh manipulation, CAD and more on
 long_description = file: README.rst, LICENSE.rst
 long_description_content_type = text/x-rst
 keywords = tensors, tensor-fields, graphs, mesh, numpy, math
-project_urls = 
-	Documentation = https://tfields.readthedocs.io
-	Source = https://gitlab.mpcdf.mpg.de/dboe/tfields
+project_urls =
+    Documentation = https://tfields.readthedocs.io
+    Source = https://gitlab.mpcdf.mpg.de/dboe/tfields
 
 [options]
 python_requires = >=3.0
@@ -125,7 +132,7 @@ python =
 [testenv]
 description = run test suite under {basepython}
 deps = 
-	{[metadata]install_requires}
+	{[options]install_requires}
 	{[options.extras_require]test}
 extras = test
 commands = 
diff --git a/setup.py b/setup.py
index 606849326a4002007fd42060b51e69a19c18675c..55b3dc06d77317095ea472becf4e684b1eca268b 100644
--- a/setup.py
+++ b/setup.py
@@ -1,3 +1,3 @@
 from setuptools import setup
 
-setup()
+setup(version='0.3.2')