refactor start