hashing must always be done in the same order