new rule for when to create abstractions