         } else {
             yPos = bounds.y
         }
-        return Transform().move(dx: xPos, dy: yPos)
-    }
-
-    fileprivate func parseUse(_ use: XMLIndexer, fill: Fill?, stroke: Stroke?, pos: Transform, opacity: Double) -> Node? {
+        return Transform.move(dx: xPos, dy: yPos)
+    }
+
+    fileprivate func parseUse(_ use: XMLIndexer, groupStyle: [String: String] = [:], place: Transform = .identity) -> Node? {
         guard let element = use.element, let link = element.allAttributes["xlink:href"]?.text else {
             return .none
         }

        if id.hasPrefix("#") {
            id = id.replacingOccurrences(of: "#", with: "")
        }
        guard let referenceNode = self.defNodes[id], let node = copyNode(referenceNode) else {
            return .none
        }
        node.place = pos.move(dx: getDoubleValue(element, attribute: "x") ?? 0, dy: getDoubleValue(element, attribute: "y") ?? 0)
        node.opacity = opacity
        let maskString = element.allAttributes["mask"]?.text ?? ""
        return parseUseNode(node: node, fill: fill, stroke: stroke, mask: maskString)
    }

    fileprivate func parseUseNode(node: Node, fill: Fill?, stroke: Stroke?, mask: String) -> Node {


    fileprivate func getPosition(_ element: SWXMLHash.XMLElement) -> Transform {
        guard let transformAttribute = element.allAttributes["transform"]?.text else {
            return Transform.identity
        }
        return parseTransformationAttribute(transformAttribute)
    }
