refactor pass one done