refactor out position movement