 
 // MARK: - Movement
 
-public extension UIBezierPath {
+public extension BezierPath {
     
     /// Add a movement to a location defined by `point`.
     public func add(_ movement: Movement, to point: CGPoint) {
-        switch movement {
-        case .move:
-            move(to: point)
-        case .line:
-            addLine(to: point)
-        }
+        #if os(iOS)
+            switch movement {
+            case .move:
+                move(to: point)
+            case .line:
+                addLine(to: point)
+            }
+        #elseif os(OSX)
+            switch movement {
+            case .move:
+                move(to: point)
+            case .line:
+                line(to: point)
+            }
+        #endif
     }
     
     /// Add a movement to the point defined by `x` and `y`.


// MARK: - Paths

public extension UIBezierPath {
    
    /// Add a list of points as a path.
    public func add(_ path: Path, points: [CGPoint]) {


import Foundation

#if os(iOS)
    public typealias BezierPath = UIBezierPath
#elseif os(OSX)
    public typealias BezierPath = NSBezierPath
#endif

// MARK: Initialization

public extension BezierPath {
    
    /// Initialize a new bezier path using a closure.
    convenience init(_ closure: (BezierPath) -> Void) {
        self.init()
        closure(self)
    }
    
    /// Create a new bezier path using a copy of an existing one and a closure.
    static func make(_ path: BezierPath, _ closure: (BezierPath) -> Void) -> BezierPath {
        let copy = path.copy() as! BezierPath
        closure(copy)
        return copy
    }
