Cleaned up expression AST implementation