tab supported and some fix in operator overloading