more TODOs
deallocate the hashtable when done