compare, equals, hashCode added