Added a ton more documentation