code refactor and try to add a non-blocking llist