This closes #33, closes #34, closes #8