change source to need channel list as argument