Added equals and hashCode implementations