more operator overloading and tests