multiple types generics