Fully fixes #96
Closes #100
Squashed commits.