UML is done, i think... please check