switch expr rework