channelchange: more locking & checking