completed first reader implementation