works, except for cond operations