refactor,add channel struct