added minor tweaks
added UML