Classes divided. Generics added.