split item creation out into a separate handler