add client-side cart functional