If given a go-ahead by the community I could be convinced to make Operators not evaluate or check by default and replace them everywhere in the codebase with lower-cased equivalents.  

E.g.

```Python
class Add(Expr):
    def __new__(cls, *args, evaluate=False): # note False

def add(*args):
    return Add(*args, evaluate=True)
```

And then replace most (all?) occurrences of `Add` with `add` and send out an announcement about the new behaviour.  We could then start using `Add` when we either don't want evaluation or know that it won't need to take place (thus being more efficient.)

Probably this solution is naive and the problem is more complicated.  I think that something like this would go a long way though.  MatrxExprs works this way very happily  (`Transpose` does not evaluate,  `transpose` does.)