hashtable still untested, cleaned up