implemented hashtable