Closes #6. Closes #38. Closes #51.