recalculating upMembers and exitingMembers looks fragile, how about just `localMembers != newMembers`?