 let document = SwiftyHaru.PDFDocument()
 let page = document.addPage()
 
-page.drawPath { context in
-    
-    context.rectangle(x: 50, y: 50, width: page.width - 100, height: page.height - 110)
-    context.strokePath()
+page.draw { context in
+    let rectangle = Path().appendingRectangle(x: 50, y: 50, width: page.width - 100, height: page.height - 110)
+    context.stroke(rectangle)
 }
 
-func drawLine(in context: PDFPathContext, x: Float, y: Float, label: String) {
-    
-    context.move(toX: x, y: y - 15)
-    context.line(toX: x + 220, y: y - 15)
-    context.strokePath()
+func drawLine(in context: DrawingContext, x: Float, y: Float, label: String) {
+    let line = Path().moving(toX: x, y: y - 15).appendingLine(toX: x + 220, y: y - 15)
+    context.stroke(line)
 }
 
-func drawLine2(in context: PDFPathContext, x: Float, y: Float, label: String) {
-    
-    context.move(toX: x + 30, y: y - 25)
-    context.line(toX: x + 160, y: y - 25)
-    context.strokePath()
+func drawLine2(in context: DrawingContext, x: Float, y: Float, label: String) {
+    let line = Path().moving(toX: x + 30, y: y - 25).appendingLine(toX: x + 160, y: y - 25)
+    context.stroke(line)
 }
 
-func drawRect(in context: PDFPathContext, x: Float, y: Float, label: String) {
-    
-    context.rectangle(x: x, y: y - 40, width: 220, height: 25)
+func constructRect(in context: DrawingContext, x: Float, y: Float, label: String) -> Path {
+    return Path().appendingRectangle(x: x, y: y - 40, width: 220, height: 25)
 }
 
-page.drawPath { context in
+page.draw { context in
     
     context.lineWidth = 0
     drawLine(in: context, x: 60, y: 770, label: "lineWidth == 0")

    context.dashStyle = DashStyle(pattern: [3])!
    context.lineWidth = 0.5
    
    context.move(to: point)
    context.line(to: point1)
    context.strokePath()
    
    context.dashStyle = .straightLine
    context.lineWidth = 1.5
    
    context.move(to: point)
    context.curve(controlPoint1: point1, endPoint: point2)
    context.strokePath()
    
    point = point + Vector(x: 0, y: -150)
    point1 = point1 + Vector(x: 0, y: -160)

    drawLine(in: context, x: 60, y: 710, label: "lineWidth == 2")
}

page.draw { context in
    context.dashStyle = DashStyle(pattern: [3], phase: 1)!
    drawLine(in: context, x: 60, y: 680, label: "dashStyle.pattern == [3], dashStyle.phase == 1 | 2 on, 3 off, 3 on...")
    
