Totally reworked shopping cart model