adding hashcode and equals ti feature