Maybe in a different PR, but I think we could greatly simplify this interface if `read` and `read_prefix` became `read` with a length argument, and `exists` and `exists_prefix` became `exists` with a length argument. They are essentially the same interface.