Moved Channel type stuff to separate files for easier reuse.