use guava Objects for equals and hashcode