     
     :returns:       A cartesian product generator
     */
-    public func generate() -> ProductGenerator {
+    public func generate() -> product {
         return self
     }
-}+}
+

    
    :returns:   An array containing the products of the provided array repeated 'repeat' times
    */
    public init(array: [T], repeat: Int) {
        self.pools = [[T]](count: repeat, repeatedValue: array)
        self.indices = [Int](count: self.pools.count, repeatedValue: 0)
        self.done = pools.filter({$0.count == 0}).count != 0
    }
    
    

    /// Terminate the generation on completion
    private var done : Bool = false
    
    
    /**
    Initiates the generator with an array of arrays to be combined
    
