refactor cart