added UML class diagram