       
       return ((zippedSelfValue, reducedSelf!), (zippedOtherValue, reducedOther!))
       }.map { ($0.0.0, $0.1.0)
-      }.filter { $0.0 != nil && 0.1 != nil
+      }.filter { $0.0 != nil && $0.1 != nil
       }.map { ($0.0!, $0.1!)
     }
     

      }
      
      }.map { ($0.0.0, $0.1.0)
      }.filter { $0.0 != nil && 0.1 != nil
      }.map { ($0.0!, $0.1!) }
    
    chainSignal(nextSignal)

    return (signalA, signalB)
  }
  
  //Skips n first values 
  
  public func skipFirst(n: Int) -> Signal<T> {
    let nextSignal: Signal<T>
    
    if self is Observable<T> {
      nextSignal = Observable<T>()
    } else {
      nextSignal = Pipe<T>()
    }
   
    var count = 0

    subscribeNext { [weak nextSignal] in
      if count >= n {
        nextSignal?.sendNext($0)
      } else {
        count += 1
      }
    }.putInto(nextSignal.pool)
    
    return nextSignal
  }
  
}
