Added UML diagram generated by Idea.