avoid update if not dirty