Closes #13
Closes #15
Closes #17
Closes #18
Closes #19
Closes #25
Closes #26
Closes #30