refactor ast nodes and parsing
Merge branch 'refactor-ast'