move shopping list logic into new shopping list model