dual-linked list is slow. don't use it