added UML Class diagram