         return self.tweenOperations.count > 0
     }
     
-    fileprivate func progressOperation<T>(_ timeStamp: TimeInterval, operation: Operation<T>) {
+    fileprivate func progressOperation<T>(_ timeStamp: TimeInterval, operation: Operation<T>) -> Bool {
         
         let period = operation.period
         
         guard let startTimeStamp = period.startTimeStamp else {
             period.set(startTimeStamp: timeStamp)
-            return
+            return false
         }
         
         guard period.hasStarted(timeStamp)
-            else { return }
+            else { return false }
         
         if !period.hasEnded(timeStamp) {
             

            return
        }
        
        self.tweenOperations.forEach {
            switch $0 {
            case let .cgfloat(operation):
                progressOperation(timeStamp, operation: operation)
            case let .float(operation):
                progressOperation(timeStamp, operation: operation)
            case let .double(operation):
                progressOperation(timeStamp, operation: operation)
            }
        }
        
        let copy = self.tweenOperations
        
        copy.forEach {
            switch $0 {
            case let .cgfloat(operation) where operation.expired:
                if removeTweenOperation(operation) {
                    expiry(operation)
                }
            case let .float(operation) where operation.expired:
                if removeTweenOperation(operation) {
                    expiry(operation)
                }
            case let .double(operation) where operation.expired:
                if removeTweenOperation(operation) {
                    expiry(operation)
                }
            default:
                break
            }
        }
    }

        let diff = CACurrentMediaTime() - pausedTimeStamp
        
        func pause<T>(_ operation: Operation<T>, time: TimeInterval) {
            if let startTimeStamp = operation.period.startTimeStamp {
                operation.period.set(startTimeStamp: startTimeStamp + time)
            }
        }
        
        self.tweenOperations.forEach {
            
            switch $0 {
            case let .cgfloat(operation):
                pause(operation, time: diff)
