updated various hashcode and equals methods to allow better testing