Add a bunch of documentation