semantic: Split phase2 into a and b.