more smart thinking to speed this up (and binary operators)