 }
 
 @warn_unused_result
-public func SplitBezier(t: Double, _ p: Vector2D ... ) -> ([Vector2D], [Vector2D]) {
-    return SplitBezier(t, p)
-}
-
-@warn_unused_result
-public func SplitBezier(t: Double, _ p: Vector3D ... ) -> ([Vector3D], [Vector3D]) {
+public func SplitBezier(t: Double, _ p: Vector ... ) -> ([Vector], [Vector]) {
     return SplitBezier(t, p)
 }
 

}

@warn_unused_result
public func BezierDerivative(p: Vector2D ... ) -> [Vector2D] {
    return BezierDerivative(p)
}

@warn_unused_result
public func BezierDerivative(p: Vector3D ... ) -> [Vector3D] {
    return BezierDerivative(p)
}


    return de
}

private func BezierDerivative(p: [Vector]) -> [Vector] {
    let n = Double(p.count)
    var de = [Vector]()
    var lastPoint = p.first!
    for current in p.dropFirst() {
        de.append(n * (current - lastPoint))
