added uml class diagram