 
 public func concatInner<T>(nestedStream: Stream<Stream<T>>) -> Stream<T>
 {
-    var autoCanceller: AutoCanceller? = nil
-    
     return Stream<T> { progress, fulfill, reject, configure in
         
-        _bindToUpstream(nestedStream, nil, reject, configure)
+        var canceller: Canceller? = nil
+        _bindToUpstream(nestedStream, nil, reject, configure, canceller)
         
         var pendingInnerStreams = [Stream<T>]()
         


public func take<T>(maxCount: Int)(upstream: Stream<T>) -> Stream<T>
{
    var autoCanceller: AutoCanceller? = nil
    
    return Stream<T> { progress, fulfill, reject, configure in
        
        _bindToUpstream(upstream, nil, reject, configure)
        
        var count = 0
        
        upstream.react(&autoCanceller) { value in
            count++
            
            if count < maxCount {


public func skip<T>(skipCount: Int)(upstream: Stream<T>) -> Stream<T>
{
    return Stream<T> { progress, fulfill, reject, configure in
        
        var canceller: Canceller? = nil
        _bindToUpstream(upstream, fulfill, reject, configure, canceller)
        
        var count = 0
        
        upstream.react(&canceller) { value in
            count++
            if count <= skipCount { return }
            
