Fixes #20, #21, and #22