added UML and documentation