Adds hashCode, equals, toString