reader doesn't need to be transactional itself