complete refactor reading