General purpose hashtable