reuse readers when possible