edited hashCode(), equals(), toString()