Issue #39 and issue #84 Add UML

This is committed from my laptop as the files committed from marwas were corrupt.