equals and hashCode added