Add ability to reorganize the AST
Refactoring