 			case .updated:
 				eachFrame(self)
 			case .completed:
-				satisfyCompletion(withSuccess: true)
+				fulfillCompletion(success: true)
 			case .cancelled:
-				satisfyCompletion(withSuccess: false)
+				fulfillCompletion(success: false)
 			}
 			observer?.didChangeState(animator: self)
 		}

		return isInMotion
	}

	func satisfyCompletion(withSuccess success: Bool, newCompletion: @escaping (_ animator: YapAnimator, _ wasInterrupted: Bool) -> Void = { _, _ in }) {

		let completionCopy = self.completion
		completion = newCompletion

	public func animate(to: T, completion: @escaping (_ animator: YapAnimator, _ wasInterrupted: Bool) -> Void = { _, _ in }) {

		toValue = to
		fulfillCompletion(success: false, newCompletion: completion)
	}

	public func instant(to: T) {

		fulfillCompletion(success: false)
		needsUpdate = false
		toValue = to
		updateInstant()
