Proper AST and stuff.