do not assume anymore that the hash function returns a nonnegative value