Added toString, equals and hashcode