Wo baby, documentation!

Added lots of documentation because it was becoming painfully obvious that it was needed.