i've added hashCode() and equals()