overloaded all required operators except for >>