Implement most of channels, other than select