         case curveToAbsolute:
             return true
         case curveToRelative:
+            return false
+        case smoothCurveToAbsolute:
+            return true
+        case smoothCurveToRelative:
             return false
         case closePathAbsolute:
             return true

        }
    }
    
    // is this really necessary? why?
    private func separateNegativeValuesIfNeeded(expression: String) -> [String] {
        var values = [String]()
        var value = String()

        expression.characters.forEach { c in
            if c == "-" {
                if value.characters.count != 0 {
                    values.append(value)
                    value = String()
                }
            }

            value.append(c)

            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)
