 		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? {

	}

	fileprivate func getStrokeWidth(_ styleParts: [String: String]) -> Double {
		var width: Double = 1
		if let strokeWidth = styleParts["stroke-width"] {
			let strokeWidth = strokeWidth.replacingOccurrences(of: " ", with: "")
			width = Double(strokeWidth)!
		}
		return width
	}

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

			case "use":
				return parseUse(node, fill: getFillColor(styleAttributes), stroke: getStroke(styleAttributes), pos: position, opacity: getOpacity(styleAttributes))
            case "mask":
                return parseMask(node)
			default:
				print("SVG parsing error. Shape \(element.name) not supported")
				return .none
