   }
 
   /// Transform error by applying `transform` on it.
-  public func mapError<F: Swift.Error>(_ transform: @escaping (Error) -> F) -> Signal<Element, F> {
+  public func mapError<F>(_ transform: @escaping (Error) -> F) -> Signal<Element, F> {
     return Signal { observer in
       return self.observe { event in
         switch event {

}

/// Merge an array of signals into one. See `merge(with:)` for more info.
public func merge<Element, Error: Swift.Error>(_ signals: [Signal<Element, Error>]) -> Signal<Element, Error> {
  return Signal { observer in
    
    guard signals.count > 0 else {

extension SignalProtocol where Error == NoError {

  /// Safe error casting from NoError to some Error type.
  public func castError<E>() -> Signal<Element, E> {
    return Signal { observer in
      return self.observe { event in
        switch event {
