generic function type params now have a variance