refactored to an itemlist