Added much more documentation.