simplify move_* logic