closures, named parameters, tail calls