                              stroke: getStroke(style, groupStyle: style), opacity: getOpacity(style), fontName: getFontName(style), fontSize: getFontSize(style), fontWeight: getFontWeight(style), pos: position)
         case "use":
             return try parseUse(node, groupStyle: style, place: position)
-        case "linearGradient", "radialGradient", "fill":
-            if let fill = parseFill(node), let id = id {
-                defFills[id] = fill
-            }
-        case "filter":
-            if let effect = try parseEffect(node), let id = id {
-                defEffects[id] = effect
-            }
-        case "mask":
-            if let mask = try parseMask(node), let id = id {
-                defMasks[id] = mask
-            }
         case "title":
             break
         default:

            switch element.name {
            case "g":
                result = try parseGroup(node, style: style)
            case "clipPath":
                if let id = element.allAttributes["id"]?.text, let clip = try parseClip(node) {
                    self.defClip[id] = clip
                }
            case "style", "defs":
                // do nothing - it was parsed on first iteration
                return .none

        }
    }

    fileprivate func parseElement(_ node: XMLIndexer, style: [String: String]) throws -> Node? {
        if style["visibility"] == "hidden" {
            return .none
