read_ now fails with `nil`:

The caller is better suited to decide what to do on type error.
Implement iterators
Whitespace cleanup