This seems like an obvious use case for operator overloading. Probably export them from core by default.