Equality, Hashing and ToString. Added an function to provide an
alternative value.