Index: uspace/lib/cpp/include/internal/hash_table.hpp
===================================================================
--- uspace/lib/cpp/include/internal/hash_table.hpp	(revision b044f66b8dea97833ca80c25b278dd700e914ab3)
+++ uspace/lib/cpp/include/internal/hash_table.hpp	(revision 86b3ae983d35b9ff2aba04174835e12eefe2a13c)
@@ -53,10 +53,5 @@
     struct key_value_key_extractor
     {
-        Key& operator()(pair<Key, Value>& p) const noexcept
-        {
-            return p.first;
-        }
-
-        const Key& operator()(pair<const Key, Value>& p) const noexcept
+        const Key& operator()(const pair<const Key, Value>& p) const noexcept
         {
             return p.first;
@@ -201,5 +196,5 @@
         {
             auto it = table.find(key);
-            return make_pair(it, it);
+            return make_pair(it, ++it);
         }
 
@@ -211,5 +206,5 @@
         { // Note: We cannot overload by return type, so we use a different name.
             auto it = table.find(key);
-            return make_pair(it, it);
+            return make_pair(it, ++it);
         }
     };
@@ -705,4 +700,6 @@
             using const_local_iterator = ConstLocalIterator;
 
+            using node_type = list_node<value_type>;
+
             using hint_type = tuple<
                 hash_table_bucket<value_type, size_type>*,
@@ -1102,15 +1099,23 @@
             }
 
-            hasher hash_function() const
-            {
-                return hasher_;
-            }
-
-            key_equal key_eq() const
-            {
-                return key_eq_;
-            }
-
-        /* private: */
+            bool keys_equal(const key_type& key, const value_type& val)
+            {
+                return key_eq_(key, key_extractor_(val));
+            }
+
+            hash_table_bucket<value_type, size_type>* table()
+            {
+                return table_;
+            }
+
+            hash_table_bucket<value_type, size_type>* head(size_type idx)
+            {
+                if (idx < bucket_count_)
+                    return &table_[idx];
+                else
+                    return nullptr;
+            }
+
+        private:
             hash_table_bucket<value_type, size_type>* table_;
             size_type bucket_count_;
