Initial work

I used nose for testing and followed a much more TDD workflow than I usually do.

Test coverage is very good! On the flip side, I don't know if this actually works yet :)
Done