hashcode equals
ui and unit tests