Closes #85, closes #90, closes #91