refactor LinkList