closes #98, closes #99, closes #101