 
 
 // Create a sequence from a closure that invokes a "yield" function
-func sequence<T>(yielder: ((T) -> ()) -> ()) -> SequenceOf<T> {
+public func sequence<T>(yielder: ((T) -> ()) -> ()) -> SequenceOf<T> {
     return SequenceOf<T>({YieldGenerator(yielder)})
 }
 

//
// The closure is executed on another thread, and each call to yield()
// will block until next() is called by the generator's thread.
func lazySequence<T>(yielder: ((T) -> ()) -> ()) -> SequenceOf<T> {
    return SequenceOf<T>({LazyYieldGenerator(yielder)})
}


        dispatch_semaphore_signal(_semValueDesired)
        dispatch_semaphore_wait(_semValueAvailable, DISPATCH_TIME_FOREVER)
        
        var value: T? = nil
        dispatch_sync(_syncQueue) {
            if !self._lastYieldedValue.isEmpty {
                value = self._lastYieldedValue[0]
