new conditional decoding