issue #37, added the UML