Edited UML diagram slightly.