It really seems to open things up. Check out imagewriter.erl Some interesting properties: - Both push and pull interfaces can be provided. It really doesn't matter! One can be implemented in terms of the other. - The "process chain commutation" problem is exposed in imagewriter.erl: where should the decompressor run?