add reader impl