use unordered_map everywhere instead of map (we never use that maps are ordered)