generics perfected