added __eq__ and __hash__