first stab implementing a channel class to handle all the functions