updated reader to accpet a channel that the caller can share