refactor, rename signal->channel