Closes #12; closes #10; closes #6