Cdodge/shopping cart rewrite

maybe all these parameters can just go into the constructor?  I was confused by this pattern for a second