operator overloading modified