multi channel impl