passes all tests for day 3. Fixes #11. Fixes #12. Fixes #13. Fixes #14