choice implementation:still at channel has to be fixed