Total restructure and break up of methods for more control. Also, redesigned the API to make more sense to a user.
Added more commenting
restarting work so this can get implemented in the new docs
Merge commit '0f22bc52c6ef5ac36adb5d6627a9cc49d4f2ce2c'