Use unordered_map from the upcoming c++0x standard instead of a homemade hash_map.h. For the one platform we have that doesn't properly support it (hi, centos5) we make two quick classes just to rename the hash_map there to the standard unordred_map. Change the codebase to use unordered_map and unordered_set.