non-mixin opEquals