New implementation using unordered maps but keeping the same interfaces