                     }
                     if let v = mapper(seed[i]) { result.append(v) }
                 }
-            // finite so break on broke :-)
-            } else {
+            } else { // finite so break on broke :-)
                 for var i = 0; result.count < need; i++ {
                     if i == seed.count { break }
                     if let v = mapper(seed[i]) { result.append(v) }

        }
    }
}

/// placeholder class
class LazyLists {
    class var Ints:LazyList<Int,Int> {
        return LazyList (
            maker: LazyListMaker.One({ $0 }),
            seed:  nil,
            mapper:{ $0 }
        )
    }
    class var UInts:LazyList<UInt,UInt> {
        return LazyList (
            maker: LazyListMaker.One({ UInt($0) }),
            seed:  nil,
            mapper:{ $0 }
        )
    }
}
/// Factory Functions
func lazylist<T>(maker:Int->T?)->LazyList<T,T> {
    return LazyList (
        maker:LazyListMaker.One(maker),
        seed:nil,
        mapper:{ $0 }
    )
}
func lazylist<T>(seed:[T])->LazyList<T,T> {
    return LazyList (
        maker:nil,
        seed:seed,
        mapper:{ $0 }
    )
}
func lazylist<T>(seed:[T], maker:(Int,[T])->T?)->LazyList<T,T> {
    return LazyList (
        maker:LazyListMaker.Two(maker),
        seed:seed,
        mapper:{ $0 }
    )
}

    /// which returns nil on false
    func filter(judge:U->Bool)->LazyList<T,U> {
        return LazyList<T,U>(
            maker:  maker,
            seed:   seed,
            mapper: { (t:T)-> U? in
                if let u = self.mapper(t) {
                    return judge(u) ? u : nil
