closes #38, closes #41, closes #42, closes #44, closes #45, closes #46, closes #47
Closes #51