a hashtable implementaion