refactor readers; need to learn to break up commits