                 strokeStart = previousFraction.layer.strokeEnd
             }
             
-            if let _displayLink = self.displayLink {
+            if (displayLink?.paused == false) {
                 if (timeFraction.started) { timeFraction.duration += elapsedTime! }
                 timeFraction.layer.strokeStart = strokeStart
                 timeFraction.layer.strokeEnd = strokeStart + CGFloat(Float(timeFraction.duration) / Float(self.duration))

    }
    
    private func startDisplayLink() {
        if (currentProgress() < 1.0 && displayLink == nil) {
            startTime = CACurrentMediaTime();
            self.displayLink = CADisplayLink(target: self, selector: Selector("animateProgress:"))
            self.displayLink!.addToRunLoop(NSRunLoop.mainRunLoop(), forMode: NSRunLoopCommonModes)
        }
    }
    
    private func stopDisplayLink() {
        if let _displayLink = self.displayLink {
            self.displayLink!.removeFromRunLoop(NSRunLoop.mainRunLoop(), forMode: NSRunLoopCommonModes)
            self.displayLink = nil
        }
    }
    
    @objc private func animateProgress(displayLink : CADisplayLink) {
        if (currentProgress() >= 1.0 || hasStartedFractions() == false) {
            stopDisplayLink()
            stopFractions()

    }

    deinit {
        displayLink!.removeFromRunLoop(NSRunLoop.mainRunLoop(), forMode: NSRunLoopCommonModes)
        displayLink = nil
        
        for timeFraction in fractions {
            if (layer.superlayer != nil) {
                timeFraction.removeObserver(self, forKeyPath: KVOStartedKey, context: nil)
