Mostly done with making AST