Collision and movement logic is now much saner and more correct.