Introduce separate AST

With helper methods to convert to existing command objects