add linked-list implementation