add priorities to optimizer/transformation phases
add another intermediate AST (with a simpler representation, and nicer-looking); also the barebone of the first transformation phase