added proper gethashcode