reader refactor and paired reader