Improved equals (by id is considered bad practice)