Done in separate branch to allow conflict resolution.
Supersedes !154 (merged)
DO NOT SQUASH THE COMMITS :)