added/updated missing equals and hashcode function