             }
 
             return PathSegment(type: command.absolute ? .C : .c, data: [x1, y1, x2, y2, x, y])
-
+            
+        case .SmoothCurveTo:
+            if separatedValues.count < 4 {
+                return .None
+            }
+            
+            guard let x2 = Double(separatedValues[0]),
+                y2 = Double(separatedValues[1]),
+                x = Double(separatedValues[2]),
+                y = Double(separatedValues[3]) else {
+                    return .None
+            }
+            
+            return PathSegment(type: command.absolute ? .S : .s, data: [x2, y2, x, y])
+            
         case .ClosePath:
             return PathSegment(type: .Z)
         default:

            return .CurveTo
        case curveToRelative:
            return .CurveTo
        case closePathAbsolute:
            return .ClosePath
        case closePathRelative:

            switch element.name {
            case "path":
                if let path = parsePath(node) {
                    return Shape(form: path, fill: getFillColor(styleAttributes), stroke: getStroke(styleAttributes), place: position, opacity: getOpacity(styleAttributes))
                }
            case "line":
                if let line = parseLine(node) {
                    return Shape(form: line, fill: getFillColor(styleAttributes), stroke: getStroke(styleAttributes), place: position,opacity: getOpacity(styleAttributes))
                }
            case "rect":
                if let rect = parseRect(node) {
                    return Shape(form: rect, fill: getFillColor(styleAttributes), stroke: getStroke(styleAttributes), place: position,opacity: getOpacity(styleAttributes))
                }
            case "circle":
                if let circle = parseCircle(node) {
                    return Shape(form: circle, fill: getFillColor(styleAttributes), stroke: getStroke(styleAttributes), place: position,opacity: getOpacity(styleAttributes))
                }
            case "ellipse":
                if let ellipse = parseEllipse(node) {
                    return Shape(form: ellipse, fill: getFillColor(styleAttributes), stroke: getStroke(styleAttributes), place: position, opacity: getOpacity(styleAttributes))
                }
            case "polygon":
                if let polygon = parsePolygon(node) {
                    return Shape(form: polygon, fill: getFillColor(styleAttributes), stroke: getStroke(styleAttributes), place: position, opacity: getOpacity(styleAttributes))
                }
            case "polyline":
                if let polyline = parsePolyline(node) {
                    return Shape(form: polyline, fill: getFillColor(styleAttributes), stroke: getStroke(styleAttributes), place: position, opacity: getOpacity(styleAttributes))
                }
            case "image":
                return parseImage(node, opacity: getOpacity(styleAttributes), pos: position)
