implemented hash table