add operator overloads