start working on reader; refactor and move things around