work with Maps, ovverriding equals() and hashCode