Step 2 - Movement. Still needs refactor.