DoublyLinkedList rewritten