more or less done with golang hashtable