closes #73, closes #70, closes #50