added UML Diagram