                 newMode = .allEnabled
             }
 
-            // Assemble & return merged Rules
+            // Assemble & return merged rules
             return RulesWrapper(
                 mode: newMode,
-                allRulesWrapped: merged(
-                    customRules: newAllRulesWrapped,
+                allRulesWrapped: mergedCustomRules(
+                    newAllRulesWrapped: newAllRulesWrapped,
                     mode: newMode,
                     with: child
                 ),

            if let cachedResultingRules = cachedResultingRules { return cachedResultingRules }

            // Calculate value
            var resultingRules = [Rule]()
            switch mode {
            case .allEnabled:
                resultingRules = allRulesWrapped.map { $0.rule }

            case var .only(onlyRulesRuleIdentifiers):
                onlyRulesRuleIdentifiers = validate(ruleIds: onlyRulesRuleIdentifiers, valid: validRuleIdentifiers)
                resultingRules = allRulesWrapped.filter { tuple in
                    onlyRulesRuleIdentifiers.contains(type(of: tuple.rule).description.identifier)
                }.map { $0.rule }

            case var .default(disabledRuleIdentifiers, optInRuleIdentifiers):
                disabledRuleIdentifiers = validate(ruleIds: disabledRuleIdentifiers, valid: validRuleIdentifiers)
                optInRuleIdentifiers = validate(ruleIds: optInRuleIdentifiers, valid: validRuleIdentifiers)
                resultingRules = allRulesWrapped.filter { tuple in

                    return !disabledRuleIdentifiers.contains(id)
                        && (!(tuple.rule is OptInRule) || optInRuleIdentifiers.contains(id))
                }.map { $0.rule }
            }

            // Filter custom rules
            if var customRulesRule = (resultingRules.first { $0 is CustomRules }) as? CustomRules {
                customRulesRule.configuration.customRuleConfigurations =
                    customRulesRule.configuration.customRuleConfigurations.filter(customRulesFilter)
                resultingRules = resultingRules.filter { !($0 is CustomRules) } + [customRulesRule]
            }

            // Sort by name
