would prefer these classes be case classes or have hashCode, equals, toString implemented.