if you override `equals` you also should override `hashCode` otherwise using two equal instances won't be found in a hashmap!