refactored safe_move?