Refactor general reader