peek() and consume() were the wrong primitives