Cart now uses a hash instead of an array