complete cart, ready for refactor