switch to plain-old-objects for AST nodes; functional library to manipulate them.