refactored mover