start generic hash table implementation