use scala style type parameter names
provider sounds slightly better
provider sounds slightly better