Is there any reason this is bottled up in libgreen? I feel like this would be more generally useful as the safe layer on top of the Queue types.