
Split the channel messaging out of the system channels to make them simpler to understand and refactor. The new channel classes could be automatically generated in a second phase, e.g. using Pigeon to reduce code usage. The new classes don't have tests as they will already be covered by the existing code.