practice with generics and interfaces