See todos. - `read` must get it's defaults from init. - `range` must work similarly to `read` - which init args should be keyword only? - consider making `read_chk_step` and `read_chk_size` (instead of just `peek`)