hashCode, equals and constructor added