added type parameters to generics