refactor ulist() and update its test