new linked list implementation, more efficient