Closes #3
Closes #5
Closes #8