added UML diagrams