         
         if animated {
             destinationProgress = newProgress
-            displayLink?.addToRunLoop(NSRunLoop.mainRunLoop(), forMode: NSDefaultRunLoopMode)
+            displayLink?.paused = false
         } else {
             progress = newProgress
         }

            progress += renderTime
            if progress >= destinationProgress {
                progress = destinationProgress
                displayLink?.removeFromRunLoop(NSRunLoop.mainRunLoop(), forMode: NSDefaultRunLoopMode)
                return
            }
        }
        
        if destinationProgress < progress {
            progress -= renderTime
            if progress <= destinationProgress {
                progress = destinationProgress
                displayLink?.removeFromRunLoop(NSRunLoop.mainRunLoop(), forMode: NSDefaultRunLoopMode)
                return
            }
        }
    }
    

    
    func internalInit() {
        displayLink = CADisplayLink(target: self, selector: Selector("displayLinkTick"))
        displayLink?.addToRunLoop(NSRunLoop.mainRunLoop(), forMode: NSDefaultRunLoopMode)
        displayLink?.paused = true
    }
    
    override public func drawRect(rect: CGRect) {
