use apply-partially instead of a lexical-let