updated UML diagram