 /// :nodoc:
 extension CGAffineTransform: Interpolatable {
 
-    public static func interpolate(with ease: Ease,
-                                   startValue: CGAffineTransform, endValue: CGAffineTransform,
+    public static func interpolate(_ startValue: CGAffineTransform, to endValue: CGAffineTransform, with ease: Ease,
                                    elapsed: TimeInterval, duration: TimeInterval) -> CGAffineTransform {
 
         let interpolate: (CGFloat, CGFloat) -> CGFloat = { (start, end) in

/// :nodoc:
extension CIColor: Interpolatable {

    public static func interpolate(with ease: Ease,
                                   startValue: CIColor, endValue: CIColor,
                                   elapsed: TimeInterval, duration: TimeInterval) -> CIColor {

        let interpolate: (CGFloat, CGFloat) -> CGFloat = { (start, end) in

/// :nodoc:
extension Interpolatable where Self: UnsignedInteger {

    public static func interpolate(_ startValue: Self, to endValue: Self, with ease: Ease,
                                   elapsed: TimeInterval, duration: TimeInterval) -> Self {

        let start = Double(startValue)
        let end = Double(endValue)
        let value = ease.interpolate(startValue: start, endValue: end,
                                     elapsed: elapsed, duration: duration)

