Merges !24 (closed) into !39 (merged). Therefore ready to merge after !39 (merged) merged.
Implements #68 (closed), #77 (closed)