refactor movment