Added a bunch more documentation