generic type to get around with the type inference