         }
     }
 
-    fileprivate func parseGroup(_ group: XMLIndexer, groupStyle: [String: String] = [:]) throws -> Group? {
+    fileprivate func parseGroup(_ group: XMLIndexer, style: [String: String]) throws -> Group? {
         guard let element = group.element else {
             return .none
         }
         var groupNodes: [Node] = []
-        let style = getStyleAttributes(groupStyle, element: element)
         try group.children.forEach { child in
             if let node = try parseNode(child, groupStyle: style) {
                 groupNodes.append(node)

    fileprivate func parseNode(_ node: XMLIndexer, groupStyle: [String: String] = [:]) throws -> Node? {
        var result: Node?
        if let element = node.element {
            switch element.name {
            case "g":
                result = try parseGroup(node, groupStyle: groupStyle)
            case "clipPath":
                if let id = element.allAttributes["id"]?.text, let clip = try parseClip(node) {
                    self.defClip[id] = clip

                // do nothing - it was parsed on first iteration
                return .none
            default:
                result = try parseElement(node, style: style)
            }

            if let result = result, let filterString = style["filter"], let filterId = parseIdFromUrl(filterString), let effect = defEffects[filterId] {
                result.effect = effect
            }
        }
