added Hashcode, Equals and toString