factored out BufferedIterator, added tasty Slice