delete old class diagram
refactoring: use java generics, explicit constructors for nested classes