closure stuff, desugar to curried functions