Mostly working AST.