 		return Circle(cx: getDoubleValue(element, attribute: "cx") ?? 0, cy: getDoubleValue(element, attribute: "cy") ?? 0, r: r)
 	}
 
-	fileprivate func parseEllipse(_ ellipse: XMLIndexer) -> Ellipse? {
+	fileprivate func parseEllipse(_ ellipse: XMLIndexer) -> Arc? {
 		guard let element = ellipse.element,
 			let rx = getDoubleValue(element, attribute: "rx"),
 			let ry = getDoubleValue(element, attribute: "ry")
 		, rx > 0 && ry > 0 else {
-
-			return .none
-		}
-
-		return Ellipse(cx: getDoubleValue(element, attribute: "cx") ?? 0, cy: getDoubleValue(element, attribute: "cy") ?? 0, rx: rx, ry: ry)
+			return .none
+        }
+        return Arc(
+            ellipse: Ellipse(cx: getDoubleValue(element, attribute: "cx") ?? 0, cy: getDoubleValue(element, attribute: "cy") ?? 0, rx: rx, ry: ry),
+            shift: 0,
+            extent: degreesToRadians(360)
+        )
 	}
 
 	fileprivate func parsePolygon(_ polygon: XMLIndexer) -> Polygon? {

		}
		node.place = pos.move(dx: getDoubleValue(element, attribute: "x") ?? 0, dy: getDoubleValue(element, attribute: "y") ?? 0)
		node.opacity = opacity
		if let shape = node as? Shape {
			if let color = fill {
				shape.fill = color
			}
            if let line = stroke {
                shape.stroke = line
            }
            if let maskIdenitifierMatcher = SVGParserRegexHelper.getMaskIdenitifierMatcher() {
                let maskString = element.attributes["mask"] ?? ""
                let fullRange = NSMakeRange(0, maskString.characters.count)
                if let match = maskIdenitifierMatcher.firstMatch(in: maskString, options: .reportCompletion, range: fullRange), let maskReferenceNode = self.defMasks[(maskString as NSString).substring(with: match.rangeAt(1))] {
                    shape.clip = maskReferenceNode.form
                    shape.fill = .none
                }
            }
			return shape
		}
		if let text = node as? Text {
			if let color = fill {
				text.fill = color
			}
			return text
		}
		return node
	}
    
    fileprivate func parseMask(_ mask: XMLIndexer) -> Shape? {
        guard let element = mask.element else {

	}

	fileprivate func getStrokeWidth(_ styleParts: [String: String]) -> Double {
		if let strokeWidth = styleParts["stroke-width"] {
            let characterSet = NSCharacterSet.decimalDigits.union(NSCharacterSet.punctuationCharacters).inverted
            let digitsArray = strokeWidth.components(separatedBy: characterSet)
            let digits = digitsArray.joined(separator: "")
            if let value = NumberFormatter().number(from: digits) {
                return value.doubleValue
            }
		}
        return 0
	}

	fileprivate func getStrokeCap(_ styleParts: [String: String]) -> LineCap {
