     }
     
     func testPathBounds4() {
-        var pathSegments = [PathSegment]()
-        let segment0 = PathSegment(type: .M, data: [10,
-                                                    80])
-        pathSegments.append(segment0)
-        let segment1 = PathSegment(type: .C, data: [40,
-                                                    10,
-                                                    65,
-                                                    10,
-                                                    95,
-                                                    80])
-        pathSegments.append(segment1)
-        let segment2 = PathSegment(type: .S, data: [150,
-                                                    150,
-                                                    180,
-                                                    80])
-        pathSegments.append(segment2)
-        
-        let path = Path(segments: pathSegments)
+        
+        let path = MoveTo(x: 10, y: 80)
+            .C(40, 10, 65, 10, 95, 80)
+            .S(150, 150, 180, 80).build()
+        
         let shape = Shape(form: path)
         
         let targetRect = Rect(x: 10, y: 10, w: 170, h: 140)

    
    func testPathBounds2() {
        
        var pathSegments = [PathSegment]()
        
        let segment0 = PathSegment(type: .M, data: [68,
                                                    101.9])
        pathSegments.append(segment0)
        let segment1 = PathSegment(type: .c, data: [1.8,
                                                    0,
                                                    3.3,
                                                    1.5,
                                                    3.3,
                                                    3.3])
        pathSegments.append(segment1)
        let segment2 = PathSegment(type: .s, data: [-1.5,
                                                    3.3,
                                                    -3.3,
                                                    3.3])
        pathSegments.append(segment2)
        let segment3 = PathSegment(type: .H, data: [40.5])
        pathSegments.append(segment3)
        let segment4 = PathSegment(type: .c, data: [-1.8,
                                                    0,
                                                    -3.3,
                                                    -1.5,
                                                    -3.3,
                                                    -3.3])
        pathSegments.append(segment4)
        let segment5 = PathSegment(type: .s, data: [1.5,
                                                    -3.3,
                                                    3.3,
                                                    -3.3])
        pathSegments.append(segment5)
        let segment6 = PathSegment(type: .H, data: [68])
        pathSegments.append(segment6)
        let segment7 = PathSegment(type: .z, data: [])
        pathSegments.append(segment7)
        
        let path = Path(segments: pathSegments)
        
        let shape = Shape(form: path)
        let stroke = Stroke(fill: Color.black, width: 1.0, cap: .butt, join: .miter, miterLimit: 4.0, dashes: [], offset: 0.0)

    }
    
    func testPathBounds1() {
        
        let path = MoveTo(x: 101.9, y: 40.5)
            .c(0, -1.8, 1.5, -3.3, 3.3, -3.3)
            .s(3.3, 1.5, 3.3, 3.3)
            .v(27.4)
            .c(0, 1.8, -1.5, 3.3, -3.3, 3.3)
            .s(-3.3, -1.5, -3.3, -3.3)
            .V(40.5).Z().build()
        
        let shape = Shape(form: path)
        
