Closes #111 (closed)
This branch is based on !89 (merged)
To keep the git history cleant, !89 (merged) should be merged first, then this branch will be rebased onto #110 (closed) before it can be merged.