Add a lot of documentation.