Refactor channelComponent and add channelLayout