 /// :nodoc:
 extension UIColor: Interpolatable {
 
-    public static func interpolate(with ease: Ease,
-                                   startValue: UIColor, endValue: UIColor,
+    public static func interpolate(_ startValue: UIColor, to endValue: UIColor, with ease: Ease,
                                    elapsed: TimeInterval, duration: TimeInterval) -> UIColor {
 
-        let rgba = RGBA.interpolate(with: ease, startValue: startValue.rgba, endValue: endValue.rgba, elapsed: elapsed, duration: duration)
+        let rgba = RGBA.interpolate(startValue.rgba, to: endValue.rgba, with: ease,
+                                    elapsed: elapsed, duration: duration)
         return rgba.color
     }
     

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

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

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


/// :nodoc:
extension Date: Interpolatable {

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

        let timeInterval = ease.interpolate(startValue: startValue.timeIntervalSince1970, endValue: endValue.timeIntervalSince1970, elapsed: elapsed, duration: duration)
