Yeah, I'm not completely in love with this. Random access to the buffer is a little sketchy because it's `O(N)` in the number of segments. Also I don't think _peek_ is the exact right name. It doesn't have side effects (so peek is the right word) but it can read anywhere (peek usually looks at the top of a stack).