Closes #56
Closes #57
Closes #59
Closes #62
Closes #64
Closes #65