switched to operator overloads