implemented channel API