Better Documentation

This contains better documentation, as now each class should have some
documentation on what it does and why it exists(or what it also used to
do). Hopefully should someone else take over it should be easier to
understand what occurs. I'll add documentation for methods next.