slightly modified main class diagram