closes #64, closes #65, closes #66