add ChannelCoercible protocol