add shopping cart logic