the hash table function