only visit dirty props