functions are hard again