finished hash table implementation