refactor to simplify expose a bit
only one copy left
for simple functions with exactly arity 1 and 2 add a fast path
directly return the results
tests