Index: libcfa/src/containers/list.hfa
===================================================================
--- libcfa/src/containers/list.hfa	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
+++ libcfa/src/containers/list.hfa	(revision c2794b23f5f9716decbad4592c83a72c2d3d75e0)
@@ -125,11 +125,10 @@
 		verify(linkToInsert.prev == 0p);
 		verify(linkToInsert.next == 0p);
-        tE & list_pos_raw = list_pos;
-        tE & list_pos_elem = * (tE *) ORIGIN_TAG_CLEAR( (size_t) & list_pos_raw );
+        tE & list_pos_elem = * (tE *) ORIGIN_TAG_CLEAR( (size_t) & list_pos );
         dlink(tE) & list_pos_links = list_pos_elem`inner;
         asm( "" : : : "memory" );
         tE & after_raw = * list_pos_links.next;
         tE & after_elem = * (tE *) ORIGIN_TAG_CLEAR( (size_t) & after_raw );
-		linkToInsert.prev = & list_pos_raw;
+		linkToInsert.prev = & list_pos;
 		linkToInsert.next = & after_raw;
         dlink(tE) & afterLinks = after_elem`inner;
@@ -145,11 +144,10 @@
 		verify(linkToInsert.next == 0p);
 		verify(linkToInsert.prev == 0p);
-        tE & list_pos_raw = list_pos;
-        tE & list_pos_elem = * (tE *) ORIGIN_TAG_CLEAR( (size_t) & list_pos_raw );
+        tE & list_pos_elem = * (tE *) ORIGIN_TAG_CLEAR( (size_t) & list_pos );
         dlink(tE) & list_pos_links = list_pos_elem`inner;
         asm( "" : : : "memory" );
         tE & before_raw = * (list_pos_links).prev;
         tE & before_elem = * (tE *) ORIGIN_TAG_CLEAR( (size_t) & before_raw );
-		linkToInsert.next = & list_pos_raw;
+		linkToInsert.next = & list_pos;
 		linkToInsert.prev = & before_raw;
         dlink(tE) & beforeLinks = before_elem`inner;
@@ -161,7 +159,6 @@
 	static inline tE & remove(tE & list_pos) {
 		verify (&list_pos != 0p);
-        tE & list_pos_elem = list_pos;
-        verify( ! ORIGIN_TAG_QUERY((size_t) & list_pos_elem) );
-        dlink(tE) & list_pos_links = list_pos_elem`inner;
+        verify( ! ORIGIN_TAG_QUERY((size_t) & list_pos) );
+        dlink(tE) & list_pos_links = list_pos`inner;
         tE & before_raw = * list_pos_links.prev;
         tE & before_elem = * (tE *) ORIGIN_TAG_CLEAR( (size_t) & before_raw );
@@ -176,5 +173,5 @@
 		list_pos_links.next = 0p;
         asm( "" : : : "memory" );
-        return list_pos_elem;
+        return list_pos;
 	}
 
@@ -194,4 +191,10 @@
         if (ORIGIN_TAG_QUERY((size_t)firstPtr)) firstPtr = 0p;
         return firstPtr == 0p;
+    }
+
+    static inline bool ?`isListed( tE & e ) {
+		verify (&e != 0p);
+        dlink(tE) & e_links = e`inner;
+		return (e_links.prev != 0p) || (e_links.next != 0p);
     }
 
