added nice little uml diagram of the whole shebang