Added hascode, equals, and toString