 @discardableResult
 public func =><Output, Input>(lhs: Output, rhs: Input) -> Input where Output: OutputPort, Input: MTIUnaryFilter, Output.Value == MTIImage? {
     lhs.connect(to: rhs.ioPort)
-    return rhs
-}
-
-@discardableResult
-public func =><Output, Input>(lhs: Output, rhs: Input) -> Input where Output: MTIFilter, Input: InputPort, Input.Value == MTIImage? {
-    lhs.outputPort.connect(to: rhs)
     return rhs
 }
 

}

@discardableResult
public func =><Input>(lhs: MTIImage, rhs: Input) -> Input where Input: InputPort, Input.Value == MTIImage? {
    lhs.outputPort.connect(to: rhs)
    return rhs
}

@discardableResult
public func =><Input>(lhs: MTIImage, rhs: Input) -> Input where Input: MTIUnaryFilter {
    lhs.outputPort.connect(to: rhs.ioPort)
    return rhs
}


    }
}

public protocol OutputPortProvider {
    associatedtype Port: OutputPort
    var outputPort: Port { get }
}

extension MTIImage: OutputPortProvider {
    
}

infix operator =>: AdditionPrecedence

extension OutputPort where Value == MTIImage? {
