Well actually the whole motivation to keep Option[O] was to distinguish between channels that do "flush" and ones that don't. Hence I was really looking on this combinator like special purpose through for resources that need to flush. Was event thinking on introducing 

```scala
type FlushableChannel[F,I,O] = Channel[F,Option[I],Option[O]]
```

I don't see too many other use cases where you want to really to have Option[A] wrapped channels, but maybe I am wrong...