     }
     
     func format(duration: NSTimeInterval) -> String {
-        if let durationString = formatter.stringFromTimeInterval(duration) {
-            return durationString
-        }
-        return ""
+        let duration = Int(duration)
+        let seconds = duration % 60
+        let minutes = (duration / 60) % 60
+        let hours = (duration / 3600)
+        return String(format: "%02d:%02d:%02d", hours, minutes, seconds)
     }
 }
 
-
-struct Progress<G: SequenceType>: SequenceType {
+public struct Progress<G: SequenceType>: SequenceType {
     var generator: G
     
     init(_ generator: G) {
         self.generator = generator
     }
     
-    func generate() -> ProgressGenerator<G.Generator> {
+    public func generate() -> ProgressGenerator<G.Generator> {
         let count = generator.underestimateCount()
         return ProgressGenerator(source: generator.generate(), count: count)
     }   

        print("\u{1B}7")
    }
    
    func next() -> G.Element? {
        let totalTime = CFAbsoluteTimeGetCurrent() - startTime
        
        var its = 0.0

import Foundation

public final class ProgressGenerator<G: GeneratorType>: GeneratorType {
    var source: G
    var index = 0
    let startTime = CFAbsoluteTimeGetCurrent()
    let barLength = 30
    
    let count: Int
    init(source: G, count: Int) {
