Adding more commenting and fleshing out the documentation with the
addition of graphviz diagrams.