diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 196f25abd3b8a0e3f636facf7089007d86d14ffb..35fa46629c91a1f0e29a93a2df5e764cc48a7c8b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,4 +1,5 @@
 stages:
+  - pretest
   - test
   - deploy
 
@@ -7,7 +8,7 @@ stages:
 
 # Normal test - runs on every commit all but "long run" tests
 tests-and-coverage:
-  stage: test
+  stage: pretest
   except:
     variables:
       - $ENABLE_NIGHTLY_BUILDS
@@ -143,6 +144,7 @@ ubuntu:
     - python3 -m coverage xml
   tags:
     - docker
+    - AVX
   artifacts:
     when: always
     paths:
@@ -201,7 +203,7 @@ riscv64:
     - sed -i 's/fopenmp/fopenmp=libgomp -I\/usr\/include\/riscv64-linux-gnu/g' ~/.config/pystencils/config.json
 
 minimal-conda:
-  stage: test
+  stage: pretest
   except:
     variables:
       - $ENABLE_NIGHTLY_BUILDS
@@ -277,7 +279,7 @@ pycodegen-integration:
 
 
 flake8-lint:
-  stage: test
+  stage: pretest
   except:
     variables:
       - $ENABLE_NIGHTLY_BUILDS
diff --git a/AUTHORS.txt b/AUTHORS.txt
index 443a630bd9c8aed26f49b721481ff7b0a144292a..3c5e2ba63d2126343d04353827027ed0e2bc0cec 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -3,12 +3,13 @@ Contributors:
 -------------
 
   - Martin Bauer <martin.bauer@fau.de>
+  - Markus Holzer <markus.holzer@fau.de>
   - Stephan Seitz <stephan.seitz@fau.de>
+  - Michael Kuron <mkuron@icp.uni-stuttgart.de>
   - Jan Hönig <jan.hoenig@fau.de>
-  - Nils Kohl <nils.kohl@fau.de>
   - Julian Hammer <julian.hammer@fau.de>
-  - Christian Godenschwager <christian.godenschwager@fau.de>
-  - Markus Holzer <markus.holzer@fau.de>
-  - Michael Kuron <mkuron@icp.uni-stuttgart.de>
+  - Nils Kohl <nils.kohl@fau.de>
+  - Frederik Hennig <frederik.hennig@fau.de>
   - Dominik Ernst <dominik.ernst@fau.de>
-  - João Victor Tozatti Risso <joaovictortr@protonmail.com>
+  - Christian Godenschwager <christian.godenschwager@fau.de>
+  - Dominik Thoennes <dominik.thoennes@fau.de>
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000000000000000000000000000000000000..5d862c3d7daf545fac7609d12c2a5a24143fa43f
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,87 @@
+# Contributing
+
+Contributions to pystencils are always welcome, and they are greatly appreciated!
+A list of open problems can be found [here]( https://i10git.cs.fau.de/pycodegen/pystencils/-/issues).
+Of course, it is also always appreciated to bring own ideas and problems to the community!
+
+
+Please submit all contributions to the official [GitLab repository](https://i10git.cs.fau.de/pycodegen/pystencils) in the form of a Merge Request. Please do not submit git diffs or files containing the changes.
+There also exists a GitHub repository, which is only a mirror to the GitLab repository. Contributions to the GitHub repository are not considered.
+
+`pystencils` is an open-source python package under the license of  AGPL3. Thus we consider the act of contributing to the code by submitting a Merge Request as the "Sign off" or agreement to the AGPL3 license.
+
+You can contribute in many different ways:
+
+## Types of Contributions
+
+### Report Bugs
+
+Report bugs at [https://i10git.cs.fau.de/pycodegen/pystencils/-/issues](https://i10git.cs.fau.de/pycodegen/pystencils/-/issues).
+
+For pystencils, it is often necessary to provide the python and [SymPy](https://www.sympy.org/en/index.html) versions used and hardware information like the
+processor architecture and the compiler version used to compile the generated kernels.
+
+### Fix Issues
+
+Look through the GitLab issues. Different tags are indicating the status of the issues.
+The "bug" tag indicates problems with pystencils, while the "feature" tag shows ideas that should be added in the future.
+
+### Write Documentation
+
+The documentation of pystencils can be found [here](https://pycodegen.pages.i10git.cs.fau.de/pystencils/). Jupyter notebooks are used to provide an
+interactive start to pystencils. It is always appreciated if new document notebooks are provided
+since this helps others a lot.
+
+## Get Started!
+
+Ready to contribute? Here is how to set up `pystencils` for local development.
+
+1. Fork the `pystencils` repo on GitLab.
+2. Clone your fork locally:
+```bash
+    $ git clone https://i10git.cs.fau.de/your-name/pystencils
+```
+3. Install your local copy into a virtualenv. It is also recommended to use anaconda or miniconda to manage the python environments.
+```bash
+    $ mkvirtualenv pystencils
+    $ cd pystencils/
+    $ pip install -e .
+```
+4. Create a branch for local development:
+```bash
+    $ git checkout -b name-of-your-bugfix-or-feature
+```
+   Now you can make your changes locally.
+
+5. When you're done making changes, check that your changes pass flake8 and the
+   tests
+```bash
+    $ flake8 pystencils
+    $ py.test -v -n $NUM_CORES -m "not longrun" .
+   
+```
+
+   To get all packages needed for development, a requirements list can be found [here](https://i10git.cs.fau.de/pycodegen/pycodegen/-/blob/master/conda_environment_dev.yml). This includes flake8 and pytest.
+
+6. Commit your changes and push your branch to GitHub::
+```bash
+    $ git add .
+    $ git commit -m "Your detailed description of your changes."
+    $ git push origin name-of-your-bugfix-or-feature
+```
+7. Submit a Merge Request on GitLab.
+
+## Merge Request Guidelines
+
+Before you submit a Merge Request, check that it meets these guidelines:
+
+1. All functionality that is implemented through this Merge Request should be covered by unit tests. These are implemented in `pystencil_tests`
+2. If the Merge Request adds functionality, the docs should be updated. Put your new functionality into a function with a docstring.
+3. If you have a maintainer status for `pystencils`, you can merge Merge Requests to the master branch. However, every Merge Request needs to be reviewed by another developer. Thus it is not allowed to merge a Merge Request, which is submitted by oneself.
+
+## Tips
+
+To run a subset of tests:
+```bash
+$ py.test my_test.py
+```
\ No newline at end of file
diff --git a/MANIFEST.in b/MANIFEST.in
index 6e92924e0b2c6b22ae697a175eaab06a8c3f69a0..90981715c2155f813ce5cc12db4f6f1d7ec53edb 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,6 +1,7 @@
 include README.md
 include COPYING.txt
-include RELEASE-VERSION
+include AUTHORS.txt
+include CONTRIBUTING.md
 global-include *.pyx
 include versioneer.py
 include pystencils/_version.py
diff --git a/README.md b/README.md
index fbe4e9cf430a45f311d43156b7af660b8c39c6fa..bd171e2b28451eebcfdce54be641af11db5a3b54 100644
--- a/README.md
+++ b/README.md
@@ -59,12 +59,25 @@ All options:
 
 Options can be combined e.g.
 ```bash
-pip install pystencils[interactive,gpu,doc]
-```    
+pip install pystencils[interactive, gpu, doc]
+```
 
+pystencils is also fully compatible with Windows machines. If working with visual studio, a pycuda makes sure to run example files first to ensure that pycuda can find the compiler's executable.
 
 Documentation
 -------------
 
 Read the docs [here](https://pycodegen.pages.i10git.cs.fau.de/pystencils) and
 check out the Jupyter notebooks in `doc/notebooks`.
+
+Authors
+-------
+
+Many thanks go to the [contributors](AUTHORS.txt) of pystencils.
+
+### Please cite us
+
+If you use pystencils in a publication, please cite the following articles:
+
+Overview:
+  - M. Bauer et al, Code Generation for Massively Parallel Phase-Field Simulations. Association for Computing Machinery, 2019. https://doi.org/10.1145/3295500.3356186
\ No newline at end of file
diff --git a/pre-push b/pre-push
deleted file mode 100755
index b0efe6d416ecfc3b61db48e74d512d23db93f265..0000000000000000000000000000000000000000
--- a/pre-push
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env bash
-
-# Checks run before every push
-# has to be copied to .git/hooks
-
-echo "Running pre-push hook"
-echo "Running flake8 check"
-flake8 --append-config=.flake8 pystencils
-
-# $? stores exit value of the last command
-if [ $? -ne 0 ]; then
- echo "flake8 failed"
- exit 1
-fi
-
-python3 setup.py quicktest
-
-# $? stores exit value of the last command
-if [ $? -ne 0 ]; then
- echo "quicktest failed"
- exit 1
-fi