functions can also be generic now, deeper down the rabbit hole