closes #10, closes #41, closes #60, ready for release