return AST objects instead of primitives