don't mark as dirty unless the field changed