move and refactor