Index: uspace/lib/cpp/include/impl/list.hpp
===================================================================
--- uspace/lib/cpp/include/impl/list.hpp	(revision 3d6f7f3cf367b7155a62feaacbfa885578f47ce8)
+++ uspace/lib/cpp/include/impl/list.hpp	(revision 4a7e47b20856bc21ded2b4a303cfe930325f1a76)
@@ -31,4 +31,5 @@
 
 #include <cstdlib>
+#include <internal/list.hpp>
 #include <iterator>
 #include <memory>
@@ -42,57 +43,4 @@
     namespace aux
     {
-        template<class T>
-        struct list_node
-        {
-            T value;
-            list_node* next;
-            list_node* prev;
-
-            template<class... Args>
-            list_node(Args&&... args)
-                : value{forward<Args>(args)...},
-                  next{}, prev{}
-            {
-                next = this;
-                prev = this;
-            }
-
-            list_node(const T& val)
-                : value{val}, next{}, prev{}
-            {
-                next = this;
-                prev = this;
-            }
-
-            list_node(T&& val)
-                : value{forward<T>(val)}, next{}, prev{}
-            {
-                next = this;
-                prev = this;
-            }
-
-            void append(list_node* node)
-            {
-                node->next = next;
-                node->prev = this;
-                next->prev = node;
-                next = node;
-            }
-
-            void prepend(list_node* node)
-            {
-                node->next = this;
-                node->prev = prev;
-                prev->next = node;
-                prev = node;
-            }
-
-            void unlink()
-            {
-                prev->next = next;
-                next->prev = prev;
-            }
-        };
-
         template<class T>
         class list_const_iterator
Index: uspace/lib/cpp/include/internal/list.hpp
===================================================================
--- uspace/lib/cpp/include/internal/list.hpp	(revision 4a7e47b20856bc21ded2b4a303cfe930325f1a76)
+++ uspace/lib/cpp/include/internal/list.hpp	(revision 4a7e47b20856bc21ded2b4a303cfe930325f1a76)
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2018 Jaroslav Jindrak
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef LIBCPP_INTERNAL_LIST
+#define LIBCPP_INTERNAL_LIST
+
+namespace std::aux
+{
+    template<class T>
+    struct list_node
+    {
+        T value;
+        list_node* next;
+        list_node* prev;
+
+        template<class... Args>
+        list_node(Args&&... args)
+            : value{forward<Args>(args)...},
+              next{}, prev{}
+        {
+            next = this;
+            prev = this;
+        }
+
+        list_node(const T& val)
+            : value{val}, next{}, prev{}
+        {
+            next = this;
+            prev = this;
+        }
+
+        list_node(T&& val)
+            : value{forward<T>(val)}, next{}, prev{}
+        {
+            next = this;
+            prev = this;
+        }
+
+        void append(list_node* node)
+        {
+            node->next = next;
+            node->prev = this;
+            next->prev = node;
+            next = node;
+        }
+
+        void prepend(list_node* node)
+        {
+            node->next = this;
+            node->prev = prev;
+            prev->next = node;
+            prev = node;
+        }
+
+        void unlink()
+        {
+            prev->next = next;
+            next->prev = prev;
+        }
+    };
+}
+
+#endif
