refactoring item model