how hashtable works internally