refactor itemlist