Omar added his UML diagram [issue #89]