Update toString(), add equals() and hashcode()