Closes #85. Closes #84. Closes #19. Closes #77. Closes #18. Closes #54. Closes #86