changed or= so it only evaluates new when necessary