Added equals() and hashCode() methods