only move if necessary