Added a bunch of documentation.  Let me know if its not enough or perhaps some of it should be moved