generics usage fixed