Compromises have a way of sticking around.  I think the solution is to divorce the structure of the tree (the arrangement of operators like Add and Mul) from their leaves/contents.  This can be done by enabling a complete `evaluate=False` mode.  

What are your thoughts on my Add/add suggestion above?