Closes #73, Closes #80, Closes #66, Closes #114