encapsulate channel implementation