closes #67, closes #68, closes #78, closes #80