added currying
any mutability spoils the function, this means that by closing over
a mutable object, it causes the Fn to become mutable