Rewrite operator dispatch to be based purely on trait lookup
Some changes caused by previous rewrite, in some cases hacky