Closes #6, #32, #30