refactor all