     
     :returns:   An optional element
     */
+    
     public mutating func next() -> [T]? {
         if done {
             return nil
         }
-        
+
         let element = map( enumerate(pools) ) {
             $1[ self.indices[$0] ]
         }
         
         self.incrementLocationInPool(self.pools.count-1)
-        
         return element
     }
     

    
    :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
    
