closes #57, closes #76, closes #41