refactor shop model