Why do you need to implement equals and hashcode for this PR?