[CS] Encapsulate channel related code in a Channel class and cache state there