Closes #26. Closes #27. Work on #9.