aren't higher order functions cool