definitions of equality always need hash