     /// - Parameter value: The new value that the spring will be reset to.
     public func reset(to value: Value) {
         function.target = value
-        animator.value = value
+        simulation.value = value
     }
     
     /// How strongly the spring will pull the value toward the target,

/// ```
public final class Spring<Value: VectorConvertible> {
    
    public var onChange: ((Value) -> Void)? {
        get { return animator.onChange }
        set { animator.onChange = newValue }
    }
    
    private let animator: Animator<Value>
    
    private var function: SpringFunction<Value> {
        didSet {
            animator.simulate(using: function)
        }
    }
    
    /// Initializes a new spring converged at the given value, using default configuration options for the spring function.
    public init(initialValue: Value) {
        function = SpringFunction(target: initialValue)
        animator = Animator(initialValue: initialValue)
    }
    
    public var value: Value {
        get { return animator.value }
        set {
            animator.value = newValue
            animator.simulate(using: function)
        }
    }
    
    public var velocity: Value {
        get { return animator.velocity }
        set {
            animator.simulate(using: function, initialVelocity: newValue)
        }
    }
    
    /// The spring's target.

/// Animates values using a spring function.
///
/// ```
/// let spring = Spring(value: CGPoint.zero)
