changed channel cloning method, added comments and cleaned up some logic flow