I went with the value passing version: > val prepare: 'a t * 'a -> Ready.t This one is equivalent to a prepend and a prepare with (). > val prepare: 'a t * (unit -> 'a) -> Ready.t So, it seems as though it is redundant with the other available operations. > In any case, once this is settled (if it isn't already :-), we should > patch the thread regressions. Done.