proposed reader interface: attempt 2