Moved code into separate packages to make sure state isn't leaking.
Added **/.DS_Store and **/*.test to the .gitignore.
Cleaned up the Makefile a bit.