Adds lots of documentation