Closes #118, Closes #119, Closes #120