So.. It's probably best to move closure_pack to the start of step(), and unpack before adding to the environment. It's a bit awkward the way it is now. Let's make it such that: - on step() entry, the closure is unpacked to perform reduction. - if there is no reduction, the value is packed.