Could `giveme`s be passed around via some context object? The idea would be to avoid having to pass around every single `giveme` object to every single function that might need it (now or in a future version). Perhaps it could be a per-arena setting, where by default nothing is passed, but specific `giveme`s can be allowed (and then that would be inherited to sub-arenas). Problem: 1. Isn't this a way to bypass pure-ness of functions? If a function `f` calls a function `g` several times with the same input, it would be expected to return the same value each time. But with implicit context objects, it could do anything (including I/O)...